我正在使用以下代码在活动之间切换:
Intent b = new Intent(nowActivity.this, About.class);
startActivity(b);
return true;
这段代码完美无缺,但它似乎使它在现有活动之上开始了一项新活动。
示例:我在Android手机上启动应用程序,然后按菜单按钮,在屏幕上显示选项。然后我点击“关于”转到应用程序的about页面。如果我按下菜单中的“关闭”选项,屏幕上将显示第一页(应用程序的主屏幕),一切都回到正方形1,就像我再次打开应用程序一样。
我不希望它这样做,我现在问你,我该如何解决这个问题呢?
提前致谢。
答案 0 :(得分:1)
我搞定了!这是解决方案:
<强> nowActivity.java 强>
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection
switch (item.getItemId()) {
case R.id.menuItem1:
Toast.makeText(this, "Du är redan på startsidan", Toast.LENGTH_SHORT).show();
return false;
case R.id.menuItem2:
Intent b = new Intent(nowActivity.this, About.class);
b.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(b);
return true;
case R.id.menuItem3:
android.os.Process.killProcess(android.os.Process.myPid());
return true;
default:
return super.onOptionsItemSelected(item);
}
}
<强> About.java 强>
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menuItem1:
Intent a = new Intent(About.this, nowActivity.class);
a.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(a);
return true;
case R.id.menuItem2:
Toast.makeText(this, "Du är redan på \"Om\"-sidan", Toast.LENGTH_SHORT).show();
return false;
case R.id.menuItem3:
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
startActivity(intent);
System.exit(0);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
答案 1 :(得分:0)
编辑你的代码:调用finish()来销毁第一个活动
Intent b = new Intent(nowActivity.this, About.class);
startActivity(b);
finish();
return true;
答案 2 :(得分:0)
当用户点击“关闭”按钮时,返回主屏幕怎么样?
以下代码取自: How to return to home screen from Activity
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
startActivity(intent);