Android UP按钮转到mainActivity而不是current

时间:2014-08-13 14:00:00

标签: android android-fragments back-stack

我有3项活动:

  • MainActivity(使用网格视图启动活动)
  • FragmentActivity(从网格视图访问全屏图像滑块)
  • InfoActivity(从主菜单或片段中的菜单打开空白活动)

当我从MainActivity转到InfoActivity时:

startActivity(new Intent(MainActivity.this, InfoActivity.class));

然后按“向上”按钮我回到主要活动。

当我从FragmentActivity转到InfoActivity时

 startActivity(new Intent(this, InfoActivity.class));

然后按“向上”我仍然回到MainActivity。

我知道这是因为我的MainActivity是Info的父级。

但是如何让“up”表现得像“后退”按钮,这样我就可以从InfoActivity转到FragmentActivity?

非常感谢任何帮助!

4 个答案:

答案 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);
}