Android 退出应用程序确认对话框多次出现
我有一个两页的应用程序,主要是主页面和第二页面 我正在从主旋律到第二旋律,反之亦然Android 退出应用程序确认对话框多次出现,android,android-alertdialog,Android,Android Alertdialog,我有一个两页的应用程序,主要是主页面和第二页面 我正在从主旋律到第二旋律,反之亦然 MainActivity.java包含以下代码: Button btnSecond = (Button) findViewById(R.id.btnSecond); btnSecond .setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) {
MainActivity.java
包含以下代码:
Button btnSecond = (Button) findViewById(R.id.btnSecond);
btnSecond .setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent j = new Intent(MainActivity.this,Second.class);
startActivity(j);
}
});
Button btnClose = (Button) findViewById(R.id.btnClose);
btnClose .setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent j = new Intent(Second.this,MainActivity.class);
startActivity(j);
}
});
Second.java
有以下代码:
Button btnSecond = (Button) findViewById(R.id.btnSecond);
btnSecond .setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent j = new Intent(MainActivity.this,Second.class);
startActivity(j);
}
});
Button btnClose = (Button) findViewById(R.id.btnClose);
btnClose .setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent j = new Intent(Second.this,MainActivity.class);
startActivity(j);
}
});
我在MainActivity.java
@Override
public void onBackPressed() {
new AlertDialog.Builder(this)
.setMessage("Are you sure you want to exit?")
.setCancelable(false)
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
MainActivity.this.finish();
}
})
.setNegativeButton("No", null)
.show();
}
问题是,当我从第二页转到主页,然后按下设备上的后退按钮时,我会收到两次警报
就我的理解而言,发生这种情况是因为MainActivity在后台加载了两次:一次是当我单击主页上的第二个按钮并遍历到第二个屏幕时,另一次是当我单击第二个页面上的close按钮并遍历到主页时
我想要的是,应该有一个确认对话框,单击“是”应该关闭主活动,即使它被多次加载。首先,当您调用第二个活动时,请使用:
btnSecond .setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent j = new Intent(MainActivity.this,Second.class);
j.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(j);
}
});
您必须调用super.onBackPressed()代码>
开始第二项活动时,只需调用finish()
Intent j = new Intent(MainActivity.this,Second.class);
startActivity(j);
finish();
这将解决您的问题。您不应该再次调用第一个活动,您可以在第二个活动中调用finish。我想这会解决你的问题
Button btnClose = (Button) findViewById(R.id.btnClose);
btnClose .setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Second.this.finish();
}
});
关于主要活动
@Override
public void onBackPressed() {
new AlertDialog.Builder(this)
.setMessage("Are you sure you want to exit?")
.setCancelable(false)
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
MainActivity.this.finish();
super.onBackPressed();
}
})
.setNegativeButton("No", null)
.show();
}
请在第二个活动按钮中更改代码单击侦听器
`按钮btnClose=(按钮)findViewById(R.id.btnClose)
你的问题解决了
finish()
函数终止您的活动
请检查。在btnClose上
只需调用MainActivity.this.finish()代码>方法,而不是Intent j=新的Intent(Second.this,MainActivity.class);星触觉(j)代码>为什么要在btnClose上启动另一个活动?感谢Piyus的回复,我无法调用finish(),因为如果用户转到第二页并按下back按钮,他应该被引导到主页。感谢juned的回复,在实际应用程序中,这只是一个虚拟,我正在向主页发送一些数据。当您调用finish()时在按钮关闭时,它将重定向到主页面上的您。感谢juned的回复,我无法调用finish(),因为如果用户转到第二页并按下back按钮,他将被引导到主页面。感谢sagar的回复。我遇到以下错误:类型ObjecttryMainActivity.super.onBackPressed()的方法onBackPressed()未定义代码>