Я хочу сделать что-то простое на Android-приложение. Как можно вернуться к предыдущему занятию?
Какой код мне нужен, чтобы вернуться к предыдущему действию
Я хочу сделать что-то простое на Android-приложение. Как можно вернуться к предыдущему занятию?
Какой код мне нужен, чтобы вернуться к предыдущему действию
Ответы:
Действия Android хранятся в стеке действий. Возвращение к предыдущему занятию может означать две вещи.
Вы открыли новое действие из другого действия с помощью startActivityForResult . В этом случае вы можете просто вызвать функцию finishActivity () из своего кода, и она вернет вас к предыдущему действию.
Следите за стеком активности. Всякий раз, когда вы начинаете новое действие с намерением, вы можете указать флаг намерения, например FLAG_ACTIVITY_REORDER_TO_FRONT
или FLAG_ACTIVITY_PREVIOUS_IS_TOP
. Вы можете использовать это для перемещения между действиями в вашем приложении. Я не использовал их много, хотя. Посмотрите на флаги здесь: http://developer.android.com/reference/android/content/Intent.html
Как упомянуто в комментариях, если действие открывается, startActivity()
то можно закрыть его finish()
. Если вы хотите использовать кнопку «Вверх», вы можете поймать это в onOptionsSelected(MenuItem item)
методе, сравнив идентификатор элемента в android.R.id.home
отличие от R.id.home
упомянутого в комментариях.
Попробуй Activity#finish()
. Это более или менее то, что кнопка «Назад» делает по умолчанию.
this.finish();
#
индикатор, который finish()
является нестатическим методом класса Activity. Это недопустимая Java, но она помогает объяснить, как можно использовать метод.
.
, то есть:Activity.someStaticMethod()
Просто напишите по нажатию финиша () . Это приведет вас к предыдущей активности.
Просто это
super.onBackPressed();
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
Это приведет вас к предыдущему действию, сохранив его стек и очистив все действия после него из стека.
Например, если стек был A-> B-> C-> D и вы запускаете B с этим флагом, стек будет A-> B
Вы хотите взять под контроль поведение кнопки «Назад»? Вы можете переопределить кнопку «Назад» (чтобы перейти к определенному занятию) одним из двух способов.
Для Android 1.6 и ниже:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
// do something on back.
return true;
}
return super.onKeyDown(keyCode, event);
}
Или, если вы поддерживаете только Android 2.0 или выше:
@Override
public void onBackPressed() {
// do something on back.
return;
}
Для более подробной информации: http://android-developers.blogspot.com/2009/12/back-and-other-hard-keys-three-stories.html
Просто вызовите этот метод, чтобы завершить текущее действие или вернуться к onBackPressed
finish();
ИЛИ
onBackPressed();
если вы хотите перейти к просто хотите перейти к предыдущему использованию активности
finish();
ИЛИ
onBackPressed();
если вы хотите перейти ко второму занятию или ниже, используйте следующее:
intent = new Intent(MyFourthActivity.this , MySecondActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
//Bundle is optional
Bundle bundle = new Bundle();
bundle.putString("MyValue1", val1);
intent.putExtras(bundle);
//end Bundle
startActivity(intent);
Добавьте это в свой метод onCLick (), он вернется к вашему предыдущему действию
Конец();
или вы можете использовать это. У меня отлично сработало
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if ( id == android.R.id.home ) {
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
Если вы правильно настроили файл AndroidManifest.xml с родительским действием, вы можете использовать:
NavUtils.navigateUpFromSameTask(this);
Где это ваш ребенок деятельности.
Попробуйте это действовать, как вы должны нажать кнопку назад
finish();
onBackPressed();
Вы можете явно позвонить, onBackPressed
это самый простой способ.
Обратитесь к предыдущему действию для деталей
Начните второе действие, используя намерение (используйте startActivity
или в startActivityForResult
соответствии с вашими требованиями). Теперь, когда пользователь нажимает кнопку «Назад», текущая активность сверху будет закрыта, а предыдущая будет отображена.
Теперь допустим, что у вас есть два действия: одно для выбора некоторых настроек для пользователя, таких как язык, страна и т. Д., И после его выбора пользователь нажимает кнопку «Далее», чтобы перейти к форме входа (например). Теперь, если вход в систему неудачен, тогда пользователь будет на входе в систему, что, если вход в систему успешен?
Если вход в систему успешен, то вы должны начать другое действие. Это означает, что будет запущено третье действие, но все еще выполняются два действия. В этом случае это будет хорошо для использования startActivityForResult
. После успешного входа в систему отправьте данные OK обратно к первому действию и закройте действие входа. Теперь, когда данные получены, начните третье действие и закройте первое действие, используя Finish.
@Override
public void onBackPressed() {
super.onBackPressed();
}
и если вы хотите, чтобы при нажатии кнопки вернуться назад, просто положить
bbsubmit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onBackPressed();
}
});
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if ( id == android.R.id.home ) {
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
Попробуйте это, это работает и на кнопке назад панели инструментов как на аппаратной кнопке назад .
Есть несколько случаев, чтобы вернуться к вашей предыдущей деятельности:
Случай 1: если вы хотите вернуть результат к предыдущей активности, тогда ActivityA.java
Intent intent = new Intent(ActivityA.this, FBHelperActivity.class);
startActivityForResult(intent,2);
FBHelperActivity.java
Intent returnIntent = new Intent();
setResult(RESULT_OK, returnIntent);
finish();
Случай 2: ActivityA -> FBHelperActivity ----> ActivityA
ActivityA.java
Intent intent = new Intent(ActivityA.this, FBHelperActivity.class);
startActivity(intent);
FBHelperActivity.java
after getting of result call finish();
By this way your second activity will finish and because
you did not call finish() in your first activity then
automatic first activity is in back ground, will visible.
После этого у вас есть два способа вернуться от текущей активности к предыдущей:
Просто позвоните: finish()
под слушателем нажатия кнопки, или переопределите следующий метод, чтобы вернуться с помощью кнопки возврата системы:
@Override
public void onBackPressed() {
super.onBackPressed();
}
Помимо всех упомянутых ответов, это все еще альтернативный способ сделать это, скажем, у вас есть два класса, класс A и класс B.
В классе A вы выполнили некоторые действия, такие как выбор флажка, распечатали некоторые данные и намерение передать класс B. В классе B вы хотели бы передать несколько значений в класс A и сохранить прежнее состояние класса A, который вы можете использовать, попробуйте эту альтернативу метод или скачать исходный код, чтобы продемонстрировать это
или
http://developer.android.com/reference/android/content/Intent.html
Просто попробуйте это, первое занятие
Intent mainIntent = new Intent(Activity1.this, Activity2.class);
this.startActivity(mainIntent);
В вашем втором занятии
@Override
public void onBackPressed() {
this.finish();
}