Вернитесь на главный экран после завершения работы


У меня есть действие, которое продолжает пищать до тех пор, пока пользователь не нажмет кнопку. При нажатии на кнопку он выводит сообщение. После отображения сообщения, вместо того, чтобы пользователь нажимал на кнопку Назад для выхода, я хочу, чтобы моя активность вышла на главный экран самостоятельно.

Делает ли это метод finish()? Если да, то как и где я должен его реализовать?

Любая помощь будет оценена по достоинству. Спасибо
5 5

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

Применить метод finish () во всех действиях. Он вернется на главный экран после завершения работы.

Случай 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);

    }

Предполагая, что вы показываете сообщение как alertdialog, вызовите finish() при нажатии кнопки alertdialog.

Если вы используете Toast() вызов finish() при нажатии кнопки после Toast() отображается.

Вы можете применить метод finish() на кнопке onClick(), а после вызова startActivity() Вы можете применить метод finish, как показано ниже.

startActivity(intent obj);
finish();