Moja klasa powinna przekazać argument do DialogFragment, ale moja aplikacja zawiesza się w metodzie onCreate (klasy okna dialogowego) dla wyjątku NullPointerException. Dialog fragment klasa część kodu:Argument DialogFragment i wyjątek 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");
}
mam NullPointer na tej linii:
file = getArguments().getString("FILE_NAME");
I nie wiem dlaczego. ja też wkleić kod wywołuje dialogowe
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");
}
tutaj „plik” ciąg nie jest zerowa, mam to sprawdzić z
Log.i("SHOWFILEACTIVITY", file);
ok dzięki, to działa. Nigdy nie użyłem funkcji newInstance i popełniłem błąd! ale dlaczego newInstance powinno być statyczne? – giozh
@giozh, ponieważ chcemy utworzyć "nową" instancję okna dialogowego, to złe podejście do projektowania polegać na * już stworzonej * instancji okna dialogowego. Utrzymanie metody statycznej usuwa zależności i powoduje mniejsze tworzenie obiektów. –