В моем приложении я пользуюсь кнопкой меню назад, чтобы вернуться к предыдущему действию. один из моих действий получает намерение от его предыдущей деятельности, и после того, как он делает http-вызов, он отправляет намерение в следующую деятельность, поэтому поток является видом A1-намерения -> A2-намерения -> A3. проблема в том, что когда я вернусь к активности A2 с A3, он сработает. Я думаю, причина была бы пустым намерением. поэтому я добавил ниже код в деятельности A3 и A2сбой мобильного приложения, когда я использую кнопку меню назад
активность A3
public boolean onOptionsItemSelected(MenuItem menuItem) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
switch (menuItem.getItemId()) {
case android.R.id.home:
Intent homeIntent = new Intent(context, AllClasses.class);
homeIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
homeIntent.putExtras(b); // bundle b has the required data for A2
startActivity(homeIntent);
}
return super.onOptionsItemSelected(menuItem);
}
активность A2
protected void onReStart(){
// retreiving data from intent
Bundle b = new Bundle();
b = getIntent().getExtras();
String imessage_string = b.getString("imessage");
Log.d("onrestart",imessage_string);
}
Проблема: - Сейчас проблема в том, что теперь, если я нажимаю кнопку назад на панели меню A3 сначала я вижу сообщение «неудачно проект остановился», а затем после нажатия «ОК» A2 начинается, как я переехал из A1 в A2 и делает вызов asyncTask. если я комментирую "homeIntent.putExtras (b);" в A3, тогда я получаю сообщение об ошибке дважды и перехожу непосредственно в A1. я уверен, что при возврате в A2 мой метод onRestart() не вызывается, так как я не вызывал никакого вызова asyncTask в этом. Кто-нибудь понимает, что я должен делать здесь? Спасибо вам за помощь заранее .... :)
вы хотите использовать onResume(), который вы должны переопределить, а не onReStart(). Кроме того, если панель действий обрабатывает домашнюю активность, вы также не должны явно запускать ее в onOptionsItemsSelected() – Martin
okay ... мой девиз - перейти на предыдущий экран, и если я не буду использовать onOptionsltemsSelected(), то как сделать я передаю идентификатор обратно в A2, который требуется для вызова метода asyncTask? –
в соответствии с жизненным циклом деятельности, представленным здесь. Http://developer.android.com/training/basics/activity-lifecycle/pausing.html Я должен использовать onReStart(), когда я вызываю другое действие, которое моя предыдущая деятельность прекращена (скрыта) ... вы не согласны? –