Activity1とActivity2という2つのアクティビティがあるとします。 Activity1のonClick()メソッドでandroid - アクティビティの終了後にダイアログを表示する方法
、我々は特定のボタンが押された場合のアクティビティ2を開始するための呼び出しを持っている:
Intent myIntent = new Intent(Activity1.this, Activity2.class);
Activity1.this.startActivity(myIntent);
仕上げた後は、()Activity2に呼び出され、Activity1が再開され、私が必要アクティビティ1に表示されるダイアログは、再開されるとすぐに表示されます。
、私は単純にActivity1のonClick()メソッドの同じブロック内にShowDialog(ID)と呼ばれる前に:
public void onClick(View v) {
if(v == addHole){
//...
Intent myIntent = new Intent(Activity1.this, Activity2.class);
Activity1.this.startActivity(myIntent);
showDialog(END_DIALOG_ID);
}
}
Activity1が再開した後、問題が、あり、END_DIALOG_IDに対応するダイアログが表示されていないが、バックキーが押されるまで、画面が暗く反応しない(ダイアログが存在するかのように)。
Activity1のonResume()メソッドとonRestart()メソッドでshowDialog()を呼び出そうとしましたが、両方ともプログラムがクラッシュします。
また、onPostExecute()でshowDialog()を呼び出してActivity2でAsyncTaskメソッドを作成しようとしましたが、ダイアログがActivity2に表示されません。
private class ShowDialogTask extends AsyncTask<Void, Void, Integer> {
/** The system calls this to perform work in a worker thread and
* delivers it the parameters given to AsyncTask.execute() */
protected Integer doInBackground(Void... id) {
//do nothing
return END_DIALOG_ID;
}
/** The system calls this to perform work in the UI thread and delivers
* the result from doInBackground() */
protected void onPostExecute(Integer id) {
super.onPostExecute(id);
showDialog(id);
}
}
は、私は今、対応setResult()とActivity1からonActivityResult()メソッドで
Activity1.this.startActivityForResult(myIntent, END_DIALOG_REQUEST);
を呼び出すことにより、これを実装しようとしていますが、これを実現するためのより良い練習がなければならないようです。私が必要とするのは、アクティビティ2の終了時にダイアログが表示されることだけです。
ご協力いただきありがとうございます。
私はstartActivityForResultとonActivityResultを提案しようとしていましたが、あなた自身でそれを発見したようです。私にとって、それはあなたが望むものを達成する最も簡単な方法です。 – mportuesisf