Контекстный режим действий 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
}