编辑
不幸的是,提供的答案都没有奏效,但我确实找到了解决问题的方法。我没有使用 onCreateDialog 方法,而是创建了自己的方法,该方法将上下文作为参数并在其中创建了 alertDialog。这可能不是最理想的解决方案,但它足以满足我的需要。我会更多地修复它并在未来改变它。这就是我所做的。
对话类:
public class SaveDialog extends FragmentActivity {
PasswordGen pG = new PasswordGen();
public Dialog createDialog(Context mContext) {
AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
builder.setTitle("ok");
builder.setMessage("ok")
.setCancelable(false)
.setPositiveButton("ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
})
.setNegativeButton("no", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
});
AlertDialog dialog = builder.create();
dialog.show();
return dialog;
MainActivity:这是我调用 alertDialog 的地方:
private void savePassword() {
SaveDialog sD = new SaveDialog();
sD.createDialog(mContext);
}
我正在尝试设置一个在另一个类中设置的 AlertDialog。但是,当我将上下文从主要活动传递给 AlertDialog 类时,我得到一个NullPointerException
这是我的警报对话框类
public class SaveDialog extends DialogFragment {
Context mContext;
public SaveDialog() {
}
public SaveDialog(Context mContext) {
this.mContext = mContext;
}
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
builder.setTitle("Save Password");
builder.setView(getContentView());
Dialog dialog = builder.create();
// dialog.show();
return dialog;
}
这是启动 onClick 的地方:
private void savePassword() {
mContext = PasswordGen.this;
SaveDialog savePasswordDialog = new SaveDialog(mContext);
savePasswordDialog.show(savePasswordDialog.getFragmentManager(), "password");
}
我很想得到答案。我已经尝试了从 getApplicationContext() 到 getActivity() 再到 ActivityName.this 的所有方法,但我总是得到 NullPointerException。我什至设置了一个方法来检查 mContext 是否为 null 并且它返回为非 null,但应用程序仍然崩溃。