Нажатие кнопки «Назад» не вернуло к предыдущему действию Android

#android #button #android-activity #back

#Android #кнопка #android-активность #Назад

Вопрос:

Сегодня я прочитал много тем, касающихся этого. Однако все решения, которые я видел, не смогли стать решением для меня. Я новичок в разработке Android. Моя проблема в том, что на моей главной странице было две кнопки, а именно PlayGame и Help. PlayGame onClicked () направит пользователя на «страницу сложности», где пользователь может выбрать легкий, средний или жесткий режим. Я хочу, чтобы, когда пользователь нажимал кнопку Android «Назад» на «странице сложности», он возвращался в главное меню (т. Е. Где Можно увидеть PlayGame и Help), потому что в моем случае происходит возврат к меню Android. Я закончил свою деятельность, как показано ниже, и я попробовал другой подход в моих двух кнопках (Справка и PlayGame), но мне не повезло.

Это мое основное меню.

 package com.kfc;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.ImageButton;

public class NewKFCActivity extends Activity {
    /** Called when the activity is first created. */
    ImageButton bPlay, bHelp;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.main);

    bPlay = (ImageButton) findViewById(R.id.playGame);
    bPlay.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Intent intent = new Intent(v.getContext(), SelectDifficulty.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
            NewKFCActivity.this.startActivity(intent);

        }
    });

    bHelp = (ImageButton) findViewById(R.id.Help);
    bHelp.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Intent intent = new Intent(v.getContext(), HelpPageOne.class);
            startActivity(intent);
            finish();
        }
    });


}
@Override
protected void onPause() {
    // TODO Auto-generated method stub
    super.onPause();
    finish();
}
}
  

Ответ №1:

Не завершайте свою деятельность, нажав меню справки. Как только вы вызовете finish, действие будет уничтожено и удалено из стека действий (поэтому, когда вы нажимаете «Назад», это уже не предыдущее действие).

Вы должны завершить действие только тогда, когда оно действительно выполнено (т. е. Пользователь выполнил все, что должно было позволить ему выполнить действие). Вам нужно думать о наборе действий в вашем приложении как о стеке. Каждый раз, когда вы начинаете какое-либо действие, оно помещается в верхнюю часть стека. Если вы хотите, чтобы кнопка «Назад» возвращала вас к предыдущему действию, не завершайте его (поскольку каждый раз, когда вы вызываете finish, он удаляет его из стека). Каждый раз, когда пользователь нажимает «Назад», текущее действие «извлекается» из стека, и система возобновляет действие под ним. Если в стеке больше нет действий из вашего приложения, когда пользователь нажимает «Назад», ваше приложение завершено, и пользователь возвращается на главный экран.

Комментарии:

1. значит, я не должен завершать действия?

2. вы можете завершить действия, если хотите, но после этого вы не сможете вернуться. Иногда можно закончить, иногда нельзя. 😉

3. хорошо .. теперь я решил, что просто хочу вернуться к предыдущему.. значит, мне не нужно будет завершать действия? Я прав?

4. Я просто обновил свой ответ, добавив немного больше описания о том, что значит завершить действия.

5. хорошо, я понимаю.. итак, мне больше не нужно использовать intent.addFlags?

Ответ №2:

Одна проблема заключается в завершении этого действия. Вы завершаете действие при включении. Действие больше не находится в стеке, и вы нажимаете «Назад», чтобы загрузить его снова…вы просто не можете загружать то, чего больше нет в стеке 🙂

с уважением,

Комментарии:

1. почему это все еще не сработало? мой onclick остается с этим намерением intent = new Intent(v.getContext(), HelpPageOne.class ); startActivity(намерение); это все равно не сработало: (

2. что именно не работает? Кнопка «Назад» или кнопка «Справка»? Может быть, кнопка «Назад», когда вы находитесь на странице справки? Если это так, найдите любой «finish ();» в главном меню и просто удалите его. Вам это не нужно.

3. кнопка «Назад» не работает и да .. на странице справки.. я также удаляю метод onPause, и в главном меню больше нет finish(); .. что мне теперь делать??

Ответ №3:

В manifest.xml если
для соответствующего действия есть android:launchMode=»singleInstance», просто попробуйте удалить его, синхронизировать и повторить попытку.