Android开发:MainActivity的onBackPressed方法使用其他活动的onBackPressed方法,而不是默认方法。我的代码出了什么问题?

时间:2014-04-28 08:07:46

标签: android back

我有三个java活动:MainActivity是打开应用程序时的第一个屏幕。 另外两个是PlayActivity和GuessActivity 我在Play和Guess活动中覆盖了onBackPressed()方法:这是代码:

PlayAcitvity中的

    @Override
public void onBackPressed() {
    final Dialog mainquestion = new Dialog(PlayActivity.this);
    mainquestion.setContentView(R.layout.dialog_mainmenu);
    mainquestion.setCanceledOnTouchOutside(false);

    Button yes = (Button) mainquestion.findViewById(R.id.yes);
    Button no = (Button) mainquestion.findViewById(R.id.no);

    yes.setOnClickListener(new OnClickListener() {

          @Override
          public void onClick(View v) {
                Intent backtomain = new Intent(PlayActivity.this, MainActivity.class);
                PlayActivity.this.startActivity(backtomain);
           }
    });

    no.setOnClickListener(new OnClickListener() {

          @Override
          public void onClick(View v) {
                  mainquestion.dismiss();
           }
    });


    mainquestion.show();
}

在GuessActivity中:

@Override
public void onBackPressed() {
    final Dialog mainquestion = new Dialog(GuessActivity.this);
    mainquestion.setContentView(R.layout.dialog_mainmenu);
    mainquestion.setCanceledOnTouchOutside(false);

    Button yes = (Button) mainquestion.findViewById(R.id.yes);
    Button no = (Button) mainquestion.findViewById(R.id.no);

    yes.setOnClickListener(new OnClickListener() {

          @Override
          public void onClick(View v) {
                Intent backtomain = new Intent(GuessActivity.this, MainActivity.class);
                GuessActivity.this.startActivity(backtomain);
           }
    });

    no.setOnClickListener(new OnClickListener() {

          @Override
          public void onClick(View v) {
                  mainquestion.dismiss();
           }
    });


    mainquestion.show();
}
在MainActivity中

我把它放在:

public void onBackPressed() {
    super.onBackPressed();
}

我的目标是点击后退按钮,然后我会在Play或Guess Activity中显示一个对话框。我对此没有任何问题,它运作良好。我的问题是当我在第一个屏幕上时,当我点击后退按钮时它会进入PlayActivity并出现PlayActivity对话框。我只想让MainActivity中的onBackPressed方法作为默认方式工作。

2 个答案:

答案 0 :(得分:1)

而不是在GuessActivityPlayAcitvity上的“是”按钮中启动另一项活动,只需调用finish()或super.onBackPressed();方法

因此您的代码必须是:

yes.setOnClickListener(new OnClickListener() {

          @Override
          public void onClick(View v) {
               YourDialog.dismiss();
               super.onBackPressed();  // or finish()
           }
    });

答案 1 :(得分:0)

找到了更好的解决方案:

    Intent i=new Intent(this, MainActivity.class);
    i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(i);

需要使用addFlags。