处理动作栏中的导航,例如后退导航。怎么样?

时间:2014-12-28 10:19:54

标签: java android navigation android-actionbar back

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

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

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

2 个答案:

答案 0 :(得分:1)

假设通过“向上导航”表示点击应用图标,您需要覆盖活动中的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 :(得分:0)

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

  1. 使用onOptionsItemSelected()方法,例如nitzanj的答案。
  2. 在您的onBackPressed()中使用finish()Activity方法,就像您的问题一样(无效)。

  3. 使用setDisplayHomeAsUpEnabled()方法。


  4. 如何使用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元素中声明具有<activity>属性的父级。 要支持具有支持库的旧设备,还要包含<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>
    

    在清单中指定父活动后,如果您使用setDisplayHomeAsUpEnabled()启用 Up 按钮,您的工作就完成了,操作栏会正确导航。

    <强> 2。或者,在您的活动中覆盖getSupportParentActivityIntent()onCreateSupportNavigateUpTaskStack()

    父活动可能不同时,这是合适的,具体取决于用户如何到达当前屏幕。也就是说,如果用户可以使用许多路径到达当前屏幕,则“向上”按钮应该沿着用户实际遵循的路径向后导航以到达那里。 Read more

    <强>来源:

    Providing Up Navigation

    Navigating Up with the App Icon