私のアプリは、メインビューから次の新しいビューを開きます。
Intent ElementsIntent = new Intent(this, ElementList.class);
startActivityForResult(ElementsIntent, 0);
これは要素のリストを表示し、これらの要素の1つを押すと、新しいアクティビティで以前と同じようにビューが開きます。このビュー内で、ボタンクリックハンドラーにAlertDialogを表示したいのですが、show()を呼び出すとアプリがクラッシュします。
ダイアログを開いてみる場所によっては、コンテキストが正しくないことが関係していると確信していますが、メインビューから静的コンテキストを作成してみましたが、element.thisを使用してみました。クラスがアクティビティに接続されており、getApplicationContextを試しましたが、これらすべてがアプリのクラッシュにつながります。
誰かが私が間違っていることを説明してくれることを願っています。
ありがとう。
クラッシュするAlertDialogコードは次のとおりです。
public void GoBackClickHandler(View v)
{
AlertDialog.Builder builder = new AlertDialog.Builder(ElementItem.this);
builder.setMessage("Skal ændringer i besvarelse gemmes?")
.setCancelable(false)
.setPositiveButton("Ja", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
if(inputIsValue())
{
UpdateELement task = new UpdateELement();
task.applicationContext = ElementItem.this;
task.execute(1);
}
}
})
.setNegativeButton("Nej", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
finish();
}
});
AlertDialog alert = builder.create();
alert.show();
}
このコードをOnCreateに移動すると、アラートは問題なく表示され、アプリのクラッシュは発生しません。ClickHandlerに配置した場合にのみクラッシュします。