我正在尝试在我的代码中实现一个简单的Dialog。但它不起作用。我搜索了每个可用的教程,包括官方的开发者指南,但没有任何作用。我从logcat得到的错误是我得到一个nullPointerException,我猜这是在getActivity上。有帮助吗?
这就是我所拥有的:这是我的自定义对话类。
public class SaveDialog扩展了DialogFragment {
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("Save Password");
builder.setView(getContentView());
Dialog dialog = builder.create();
dialog.show();
return dialog;
}
private View getContentView() {
LayoutInflater inflater = getActivity().getLayoutInflater();
return inflater.inflate(R.layout.dialog, null);
}
}
这是我发生onclick的主要活动
private void savePassword() {
SaveDialog savePasswordDialog = new SaveDialog();
savePasswordDialog.show(savePasswordDialog.getSupportFragmentManager(), "tag");
}
每次启动onClick时,应用程序崩溃。最重要的是,目前我正在尝试使用getSupportFragmentManager,但它说它未定义。
答案 0 :(得分:14)
答案 1 :(得分:3)
试试这个......工作!!
((AppCompatActivity)activity).getSupportFragmentManager()
答案 2 :(得分:1)
只需从android.support.v4.app.DialogFragment或android.support.v4.app.Fragment调用getFragmentManager()即可。它将返回一个android.support.v4.app.FragmentManager(这是支持FragmentManager)
答案 3 :(得分:-1)
您不必在onCreateDialog()中手动显示对话框,只需返回它就足以让DialogFragment在调用savePassword()时发挥其魔力(并显示对话框)。
所以从onCreateDialog中删除这一行: dialog.show();
它应该有效。祝你好运!