按后退按钮没有回到以前的Android活动

时间:2011-11-02 12:53:28

标签: android button android-activity back

我今天正在阅读很多关于此事的主题。但是,我见过的所有解决方案都无法成为我的解决方案。我是Android开发的新手。我的问题是我的主页面上有两个按钮 - 即PlayGame和Help。 PlayGame onClicked()将引导用户进入“难度页面”,用户可以选择“简易”,“中等”或“硬”模式。我想要的是,当用户按下“难度页面”中的Android后退按钮时,它将返回主菜单(即可以看到PlayGame和帮助的位置),因为在我的情况下发生的事情是它回到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();
}
}

3 个答案:

答案 0 :(得分:5)

点击帮助菜单后,请勿完成您的活动。一旦你打电话完成,活动就会被销毁并从活动堆栈中删除(所以当你按回来时,它不再是之前的活动)。

你应该只在真正完成活动时完成活动(即用户已经完成了活动应该允许他们做的任何事情)。您需要将应用程序中的一组活动视为堆栈。每次启动活动时,它都会放在堆栈的顶部。如果您希望后退按钮将您带回上一个活动,请不要完成它(因为每次调用完成后它都会将其从堆栈中删除)。每次用户按下时,当前活动将从堆栈“弹出”,系统将恢复其下方的活动。如果当用户按下时,您的应用程序中没有其他活动,则您的应用程序已完成,用户将返回主屏幕。

答案 1 :(得分:3)

此活动结束时出现一个问题。您在onPause时完成活动。活动不再在堆栈中,你再按回来再加载它...你只是无法加载堆栈中不存在的东西:)

的问候,

答案 2 :(得分:0)

在manifest.xml中是否存在
android:launchMode =“ singleInstance” 对于相关活动,只需尝试将其删除,同步并再试一次即可。