Powiedzmy, że mamy dwie aktywności: Activity1 i Activity2.android - Jak wyświetlić okno dialogowe po zakończeniu aktywności
W Activity1 za onClick() metoda, mamy połączenie rozpocząć działalność 2 czy dany przycisk jest wciśnięty:
Intent myIntent = new Intent(Activity1.this, Activity2.class);
Activity1.this.startActivity(myIntent);
Po zakończeniu() jest wywoływana w Activity2 i Activity1 zostanie wznowione, Potrzebuję okno dialogowe do wyświetlenia w Activity1, jak tylko zostanie wznowione.
Przed, po prostu nazywa ShowDialog (id) w tym samym bloku Activity1 za onClick() metoda:
public void onClick(View v) {
if(v == addHole){
//...
Intent myIntent = new Intent(Activity1.this, Activity2.class);
Activity1.this.startActivity(myIntent);
showDialog(END_DIALOG_ID);
}
}
Problem jest, po wznowieniu Activity1, okno odpowiadające END_DIALOG_ID nie jest widoczny, ale ekran jest przyciemniony i nie reaguje (tak jakby dialog był obecny), dopóki nie zostanie naciśnięty klawisz wstecz.
Próbowałem umieścić wywołanie showDialog() w metodach onResume() i onRestart() Activity1, ale oba te programy powodują awarię programu.
Próbowałem również utworzyć metodę AsyncTask w Activity2, z wywołania showDialog() w jego onPostExecute(), ale okno dialogowe nie jest widoczne w 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);
}
}
Jestem teraz próbuje wdrożyć to poprzez wywołanie
Activity1.this.startActivityForResult(myIntent, END_DIALOG_REQUEST);
z analogicznym setResult() i onActivityResult() metod z Activity1, ale wydaje się, że nie powinno być lepsze praktyki dla realizacji tego. Wszystko, czego potrzebuję, to pokazanie okna dialogowego po zakończeniu działania2.
Dziękujemy za pomoc.
Chciałem zasugerować startActivityForResult i onActivityResult, ale wydaje się, że odkryłeś to na własną rękę. Dla mnie to najprostszy sposób na osiągnięcie tego, co chcesz. – mportuesisf