4

我的活动扩展了 AppCompatActivity,我希望在其上设置一个上下文操作栏。所以这是我的 onCreate 方法

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
MainActivity.this.startSupportActionMode(new ActionBarCallBack());

我的 ActionBarCallBack 扩展了 android.support.v7.view.ActionMode 我这样声明

@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
    mode.getMenuInflater().inflate(R.menu.contextual_menu, menu);
    return false;
}

我的清单上设置的主题:

<style name="AppTheme.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
    <item name="windowActionModeOverlay">true</item>
</style>

主要活动:

<activity
        android:name=".MainActivity"
        android:label="@string/title_activity_main2"
        android:theme="@style/AppTheme.NoActionBar" >
</activity>

我的 onCreateActionMode 触发器,但 CAB 从未显示。

有任何想法吗?

4

2 回答 2

3

所以这是错误

@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
    mode.getMenuInflater().inflate(R.menu.contextual_menu, menu);
    return true; // Now it works
}

将 windowActionModeOverlay 设置为我的 Theme.NoActionBar

<item name="windowActionModeOverlay">true</item>

不必像我在 stackoverflow 线程上看到的那样从我的 toolBar 设置 startActionMode()。在 android.support.v7.view.ActionMode 这条线对我来说很好用。

Main2Activity.this.startSupportActionMode(new ActionBarCallBack()); //android.support.v7.view.ActionMode
于 2016-01-27T14:32:50.147 回答
1

您从ActionMode.Callback 中实现的onCreateActionMode方法返回false 。

尝试将返回值更改为true

@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
    // Inflate menu
    return true; //  <=====  MUST RETURN TRUE
}
于 2020-04-22T10:52:35.003 回答