Я хочу зробити щось просте в додатку для Android. Як можна повернутися до попередньої діяльності.
Який код мені потрібен, щоб повернутися до попередньої діяльності
Я хочу зробити щось просте в додатку для Android. Як можна повернутися до попередньої діяльності.
Який код мені потрібен, щоб повернутися до попередньої діяльності
Відповіді:
Діяльність Android зберігається в стеку активності. Повернення до попередньої діяльності може означати дві речі.
Ви відкрили нову діяльність з іншої діяльності за допомогою startActivityForResult . У такому випадку ви можете просто зателефонувати з функцією FinActivity () з вашого коду, і вона поверне вас до попередньої діяльності.
Слідкуйте за стеком активності. Щоразу, коли ви починаєте нову діяльність з наміром, ви можете вказати прапор наміру, як 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()
є нестатичним методом класу Діяльність. Це неправдивий 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
Просто зателефонуйте цим методам, щоб закінчити поточну діяльність або повернутися назад onBackPress
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
. Після успішного входу поверніть дані ОК до першої активності та закрийте вхід. Тепер, коли дані отримані, тоді запустіть третю активність і закрийте першу активність, використовуючи фініш.
@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();
}
Окрім усіх згаданих відповідей, їхній спосіб все ще є альтернативним способом, скажімо, у вас є два класи, клас А і клас Б.
Клас А Ви здійснили деякі дії, такі як встановити прапорець, надрукувавши деякі дані та наміри до класу B. Класу В ви хочете передати кілька значень класу А та зберегти попередній стан класу А, ви можете використовувати, спробуйте цю альтернативу метод або завантажити вихідний код, щоб продемонструвати це
або
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();
}