La mia classe dovrebbe passare un argomento a DialogFragment, ma la mia app si arresta in modo anomalo all'interno del metodo onCreate (della classe di dialogo) per NullPointerException. Dialog frammento porzione classe di codice:Argomento DialogFragment ed eccezione nullpointer
public class ConfirmDialog extends DialogFragment {
public ConfirmDialog() {}
ConfirmDialog newInstance(String f) {
ConfirmDialog d = new ConfirmDialog();
Bundle args = new Bundle();
args.putString("FILE_NAME", f);
d.setArguments(args);
return d;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
file = getArguments().getString("FILE_NAME");
}
ho il nullpointer in questa linea:
file = getArguments().getString("FILE_NAME");
E io non so perché. incollo anche il codice chiama il
private void showConfirmDialog(String file) {
FragmentManager fm = getSupportFragmentManager();
ConfirmDialog dialog = new ConfirmDialog();
Log.i("SHOWFILEACTIVITY", file);
dialog.newInstance(file);
dialog.show(fm, "fragment_confirm_dialog");
}
Qui il "file" finestra stringa non è nulla, ho controllare con
Log.i("SHOWFILEACTIVITY", file);
ok grazie, funziona. Non ho mai usato la funzione newInstance e ho fatto un errore! ma perché newInstance dovrebbe essere statico? – giozh
@giozh dal momento che vogliamo creare un'istanza 'new' del Dialog, è un cattivo approccio al design fare affidamento su un'istanza * già creata * del Dialog. Mantenere il metodo statico rimuove le dipendenze e si traduce in una minore creazione di oggetti. –