繁体   English   中英

处理来自操作栏的导航,如后退导航。 如何?

[英]Handle Up navigation from Action Bar like Back navigation. How?

我如何处理像后退导航一样的向上导航?

是否有向上导航的方法,例如后导航( onBackPressed() )?

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

假设“向上导航”是指点击应用程序图标,您需要在您的活动中覆盖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);
}

有很多方法可以做到这一点:

  1. 使用onOptionsItemSelected()方法,如上面 nitzanj 的回答。
  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)开始,您可以在<activity>元素中使用parentActivityName属性声明父级。 要使用支持库支持旧设备,还需要包含一个<meta-data>元素,该元素将父活动指定为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>

一旦像这样在清单中指定了父 Activity 并且您使用setDisplayHomeAsUpEnabled()启用了向上按钮,您的工作就完成了并且操作栏正确地向上导航。

2. 或者,在您的活动中覆盖getSupportParentActivityIntent()onCreateSupportNavigateUpTaskStack()

父活动可能因用户到达当前屏幕的方式而异时,这是合适的。 也就是说,如果用户可以通过许多路径到达当前屏幕,则向上按钮应该沿着用户实际遵循的路径向后导航。 阅读更多

来源:

提供导航

使用应用程序图标向上导航

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM