編集
残念ながら、提供された回答はどれも機能しませんでしたが、問題を解決する方法を見つけました。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が発生します。
これは私の Alert Dialog クラスです
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 ではないとして返されたにもかかわらず、アプリケーションは引き続きクラッシュします。