Sınıfım, DialogFragment öğesine bir argüman iletmelidir, ancak benim app bir NullPointerException için onCreate yöntemi (iletişim kutusunun) içinde çöker. kod Diyalog parçası sınıfı kısmı:DialogFragment argüman ve nullpointer istisnası
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");
}
Bu satırında nullpointer vardır:
file = getArguments().getString("FILE_NAME");
Ve nedenini bilmiyorum. Ben de kod iletişim İşte
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");
}
"dosyasını" olarak adlandırdığı yapıştırmak dize null değil, ben o zaman,
Log.i("SHOWFILEACTIVITY", file);
Tamam, teşekkürler. Hiç yeni bir işlev kullanmamıştım ve bir hata yaptım! ama neden yeni bir durum statik olmalı? – giozh
@giozh, Dialog'un “yeni” bir örneğini oluşturmak istediğimizden beri, Diyaloğun * oluşturulmuş bir örneğine güvenmek için kötü bir tasarım yaklaşımıdır. Yöntemi statik tutmak bağımlılıkları ortadan kaldırır ve daha az nesne oluşturma ile sonuçlanır. –