Контекстный режим действий AppCompatActivity не отображается

У меня есть активность, расширяющая 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; //Here was the error
    }

Тема установлена ​​на моем манифесте

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

манифест

<application
    android:name=".Application"
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme" >

</application>

Деятельность

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

Что ж! Мой триггер onCreateActionMode работает нормально, но CAB никогда не показывается.

Есть идеи?

1 ответ

Так что здесь была ошибка

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

Установите windowActionModeOverlay для моего Theme.NoActionBar

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

Не нужно устанавливать startActionMode() из моей панели инструментов, как я видел в потоке стека overoverflow. На android.support.v7.view.ActionMode эта строка просто отлично работает для меня.

Main2Activity.this.startSupportActionMode(new ActionBarCallBack()); //android.support.v7.view.ActionMode

Вы возвращаете false из реализованного метода onCreateActionMode в своем ActionMode.Callback.

Попробуйте изменить возвращаемое значение на true

@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
    // Inflate menu
    return true; //  <=====  MUST RETURN TRUE
}
Другие вопросы по тегам