Android Всплывающее меню панели инструментов WindowLeaked при изменении ориентации - PullRequest
0 голосов
/ 07 января 2020

Я провел день на этом:

Я использую обычную панель инструментов.

- в MainActivity. java:

    @Override
    protected void onCreate(Bundle savedInstanceState) {

    Toolbar toolbar = findViewById(R.id.my_toolbar);
    setSupportActionBar(toolbar);

    }

    @Override
    public boolean onPrepareOptionsMenu(Menu menu) {

    getMenuInflater().inflate(R.menu.menu_toolbar_main, menu);
    return super.onPrepareOptionsMenu(menu);

    }

    @Override
    public boolean onOptionsItemSelected(@NonNull MenuItem item) {

    switch (item.getItemId()) {
        case R.id.test1:
           test1();
           return true;

        case R.id.test2:
           test2();
           return true;

        default:
            return super.onOptionsItemSelected(item);
    }

- menu_toolbar_main . xml

    <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:support="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/test1"
        android:title="@string/toolbar_test1"
        support:showAsAction="always" />


    <item
        android:id="@+id/test2"
        android:title="@string/toolbar_test2"
        support:showAsAction="never"/>

    </menu>
  • У меня есть разные элементы, и некоторые из них появляются во всплывающем меню (поддержка: showAsAction = "never").

  • Моя проблема: если я открываю всплывающее меню и поворачиваю экран, я получаю исключение WindowLeaked.

E / WindowManager: android. view.WindowLeaked: активность com.test.MainActivity вытекла из окна android .widget.PopupWindow $ PopupDecorView ...

  • Я пытался скрыть всплывающее меню в onPause (), onStop, onDestroy , но он не работает ...

Примечание. Единственный ответ, который я нашел в Inte rnet, - это android: configChanges = "Ориентация". Но я не хочу этого делать.

Спасибо!

...