我有3项活动:
当我从MainActivity转到InfoActivity时:
startActivity(new Intent(MainActivity.this, InfoActivity.class));
然后按“向上”按钮我回到主要活动。
当我从FragmentActivity转到InfoActivity时
startActivity(new Intent(this, InfoActivity.class));
然后按“向上”我仍然回到MainActivity。
我知道这是因为我的MainActivity是Info的父级。
但是如何让“up”表现得像“后退”按钮,这样我就可以从InfoActivity转到FragmentActivity?
非常感谢任何帮助!
答案 0 :(得分:1)
您必须覆盖onOptionsItemSelected
课程中的InfoActivity
,以拦截"up"
按钮并从那里拨打onBackPressed
。像这样:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if(item != null && item.getItemId() == android.R.id.home) {
onBackPressed();
return true;
}
return super.onOptionsItemSelected(item);
}
答案 1 :(得分:1)
来自@Firoze Rakib的答案将有效,但我想让您更好地了解Google提出的问题和解决方案。
首先,您很可能已经在AndroidManifest.xml中定义了父级,因此您应该删除它,因为您的InfoActivity可能有不同的父级。
其次,BACK BUTTON(在@Firoze回答中以编程方式调用)和UP BUTTON之间存在细微差别。第一个只是破坏当前活动并显示之前显示的活动,理论上它不一定是你父母的任何一个。 UP BUTTON启动父Activity的新实例并清除当前任务中的活动堆栈。
如果这种差异对您很重要,那么您应该按照Android Developers page的说明进行操作。看一下以这句话开头的第二点:
或者,覆盖getSupportParentActivityIntent()和 你活动中的onCreateSupportNavigateUpTaskStack()。
答案 2 :(得分:0)
如何使“up”表现得像“后退”按钮...
如果您决定这样做(我不应该这样做),我相信另一个答案有技术细节。
我的回答的目的是指出,像后面这样的行为会因违反Android design guidelines而使用户感到困惑。
向上导航是使用具有不同目的的后退键的替代方法:它为用户提供了一种方式,当他们在层次结构深处“丢失”时导航回应用程序的顶部,他们可能必须按下后退钥匙多次逃脱。在这种情况下,一些用户会惊慌失措并开始捣碎后退键,而导航则意味着为他们提供替代选择。
答案 3 :(得分:0)
试试这个
public boolean onOptionsItemSelected(MenuItem item) {
if(item != null )
if( && item.getItemId() == android.R.id.home) {
// your code
return true;
}
return super.onOptionsItemSelected(item);
}