如何使用操作栏处理向上导航,就像返回导航一样?

3

如何处理向上导航,就像处理返回导航一样?

是否有类似于返回导航(onBackPressed())的向上导航方法?

或者当我按向上导航时,我可以编程使用 finish() 方法吗?


你需要展示你的代码示例,这样我们才能帮助你。 - Edward J Beckett
2个回答

3
假设“向上导航”是指点击应用程序图标,您需要在活动中覆盖 onOptionsItemSelected() 并处理它,代码如下:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // 'home' is the id for the icon click in the action bar (i.e. up/back).
    if (item.getItemId() == android.R.id.home) {
        // do your thing and return true
        return true;
    }

    return super.onOptionsItemSelected(item);
}

2
有很多种方法可以做到这一点:
  1. 像nitzanj的答案中所述,使用onOptionsItemSelected()方法。
  2. 在您的Activity中使用onBackPressed()finish()方法(不太有效)。

  3. 使用setDisplayHomeAsUpEnabled()方法。


如何使用 setDisplayHomeAsUpEnabled() 方法?
首先,在您的 onCreate 方法中添加以下代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_details);

    // use getActionBar() if API is higher than 11
    ActionBar actionBar = getSupportActionBar();
    actionBar.setDisplayHomeAsUpEnabled(true);
    ...
}

现在,操作栏中的图标将显示为向上箭头(如图所示)。然而,默认情况下它不会执行任何操作。要指定用户按下向上按钮时打开的活动,您有两个选项:
1. 在清单文件中指定父活动。
当父活动始终相同时,这是最佳选择。通过在清单中声明哪个活动是父活动,操作栏在用户按下向上按钮时自动执行正确的操作。 从Android 4.1(API级别16)开始,可以在元素中使用parentActivityName属性声明父活动。 为了支持使用支持库的旧设备,还应包括一个元素,该元素将父活动指定为android.support.PARENT_ACTIVITY的值。例如:
<application ... >
    ...
    <!-- The main/home activity (it has no parent activity) -->
    <activity
        android:name="com.example.myfirstapp.MainActivity" ...>
        ...
    </activity>
    <!-- A child of the main activity -->
    <activity
        android:name="com.example.myfirstapp.DisplayMessageActivity"
        android:label="@string/title_activity_display_message"
        android:parentActivityName="com.example.myfirstapp.MainActivity" >
        <!-- Parent activity meta-data to support 4.0 and lower -->
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.example.myfirstapp.MainActivity" />
    </activity>
</application>

一旦在清单文件中像这样指定了父活动,并使用 setDisplayHomeAsUpEnabled() 启用了“向上”按钮,你的工作就完成了,操作栏会正确地导航到上一级。
或者,在你的活动中覆盖 getSupportParentActivityIntent()onCreateSupportNavigateUpTaskStack()
当用户到达当前屏幕的路径有很多种可能时,这是适当的。也就是说,如果有许多路径可以使用户到达当前屏幕,则“向上”按钮应该沿着用户实际遵循的路径向后导航。阅读更多 来源:提供向上导航使用应用图标进行向上导航

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接