gio*_*ozh 5 android nullpointerexception android-dialogfragment
我的类应该将参数传递给DialogFragment,但是我的应用程序在onCreate方法(对话框类)中崩溃,导致NullPointerException.Dialog片段类代码部分:
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");
}
Run Code Online (Sandbox Code Playgroud)
我在这一行有nullpointer:
file = getArguments().getString("FILE_NAME");
Run Code Online (Sandbox Code Playgroud)
我不知道为什么.我也粘贴代码调用对话框
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");
}
Run Code Online (Sandbox Code Playgroud)
这里的"文件"字符串不为空,我已经检查过了
Log.i("SHOWFILEACTIVITY", file);
Run Code Online (Sandbox Code Playgroud)
你正在ConfirmDialog通过构造函数创建一个,然后调用newInstance(),创建另一个(正确的)ConfirmDialog.但是,然后您丢弃该正确的实例.
解决这个问题:
你的newInstance()方法应该是静态的:
public static ConfirmDialog newInstance(String f) {
ConfirmDialog d = new ConfirmDialog();
Bundle args = new Bundle();
args.putString("FILE_NAME", f);
d.setArguments(args);
return d;
}
Run Code Online (Sandbox Code Playgroud)
而showConfirmDialog()应该改变所以它使用的newInstance()方法正确.
private void showConfirmDialog(String file) {
FragmentManager fm = getSupportFragmentManager();
Log.i("SHOWFILEACTIVITY", file);
ConfirmDialog dialog = ConfirmDialog.newInstance(file);
dialog.show(fm, "fragment_confirm_dialog");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4754 次 |
| 最近记录: |