我有三个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方法作为默认方式工作。
答案 0 :(得分:1)
而不是在GuessActivity
和PlayAcitvity
上的“是”按钮中启动另一项活动,只需调用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。