Нажатие кнопки «Назад» не вернулось к предыдущей активности Android - PullRequest
1 голос
/ 02 ноября 2011

Сегодня я читал много тем об этом.Однако все решения, которые я видел, не были решением для меня.Я новичок в разработке Android.Моя проблема в том, что у меня на главной странице было две кнопки - PlayGame и Help.PlayGame onClicked () направит пользователя на «страницу сложности», где пользователь может выбрать легкий, средний или жесткий режим.Что я хочу, так это то, что когда пользователь нажимает кнопку «Назад» Android на «странице сложности», он возвращается в главное меню (то есть, где можно увидеть PlayGame и Help), потому что в моем случае происходит то, что онвозвращается в меню Android.Я закончил свою деятельность, как показано ниже, и попробовал другой подход в двух моих кнопках (Help и 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();
}
}

Ответы [ 3 ]

5 голосов
/ 02 ноября 2011

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

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

3 голосов
/ 02 ноября 2011

Одна проблема в конце этого действия.Вы заканчиваете упражнение, когда вы на паузе.Действие больше не находится в стеке, и вы нажимаете обратно, чтобы загрузить его снова ... вы просто не можете загрузить то, чего больше нет в стеке:)

regards,

0 голосов
/ 14 сентября 2018

В файле manifest.xml, если есть
андроид: launchMode = "SingleInstance" для связанной деятельности просто попробуйте удалить его, синхронизировать и повторить попытку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...