我有一个主要有两个页面的应用程序,主要是第二个。
我正在从主要经历到第二经历和副经理。
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);
}
});
Second.java
包含以下代码:
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在后台加载了两次:一次是当我点击主页面上的第二个按钮并遍历到第二个屏幕时,第二个是当我点击关闭按钮时第二页并遍历到主页面。
我想要的是应该有一个确认对话框并点击是应该关闭主要活动,即使它被多次加载。
答案 0 :(得分:1)
您不应该再次呼叫第一个活动,您可以在第二个活动上调用完成。我想这会解决你的问题。
Button btnClose = (Button) findViewById(R.id.btnClose);
btnClose .setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Second.this.finish();
}
});
on mainactivity。
@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();
}
答案 1 :(得分:0)
首先,当您拨打第二个活动时使用:
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();
@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();
}
答案 2 :(得分:0)
开始第二个活动时,只需致电finish()
Intent j = new Intent(MainActivity.this,Second.class);
startActivity(j);
finish();
这将解决您的问题。
答案 3 :(得分:0)
请在第二个活动按钮点击监听器中更改代码
`Button btnClose =(Button)findViewById(R.id.btnClose);
btnClose .setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
finish();
}
});`
你的问题已经解决了。
finish()
函数可以杀死你的活动。
请检查。