Вернитесь на главный экран после завершения работы
У меня есть действие, которое продолжает пищать до тех пор, пока пользователь не нажмет кнопку. При нажатии на кнопку он выводит сообщение. После отображения сообщения, вместо того, чтобы пользователь нажимал на кнопку Назад для выхода, я хочу, чтобы моя активность вышла на главный экран самостоятельно.
Делает ли это метод finish()
? Если да, то как и где я должен его реализовать?
5 ответов:
Intent i= new Intent("package.homescreenactivity");//homescreen of your app. i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NO_HISTORY); startActivity(i); finish();
Вернитесь на главный экран, очистив стек действий.
Чтобы понять всю концепцию, я предлагаю вам взглянуть на этот сайт. http://developer.android.com/guide/components/tasks-and-back-stack.html . Сайт рассказывает о том, как работает обратный стек активности.Обновление: (15 августа 2014)
Очистка Backstack может быть не очень хорошей идеей. Пожалуйста, взгляните на эффективные рекомендации по проектированию навигации.
Кнопка Назад должна вернуть вас назад. к предыдущей деятельности.
Проверка
Http://developer.android.com/design/patterns/navigation.html
Случай 1: Для Нажатия Кнопки
public void onClick(View v) { // Show message here moveTaskToBack(true); }
Случай 2: Если вы хотите попросить пользователя зайти домой
public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { AlertDialog.Builder alertbox = new AlertDialog.Builder(this); alertbox.setTitle(res.getString("Title")); alertbox.setMessage(res.getString("Exit")); alertbox.setIcon(R.drawable.logo); alertbox.setPositiveButton(res.getString(R.string.Yes), new DialogInterface.OnClickListener() { public void onClick(DialogInterface arg0, int arg1) { exit(); } }); alertbox.setNeutralButton(res.getString(R.string.No), new DialogInterface.OnClickListener() { public void onClick(DialogInterface arg0, int arg1) { } }); alertbox.show(); return true; } return super.onKeyDown(keyCode, event); } private void exit() { moveTaskToBack(true); }