Как надуть меню SupportActionBar извне Activity - PullRequest
0 голосов
/ 13 декабря 2018

Я отделил представление от своей деятельности, и у меня есть отдельный класс для всех операций, связанных с пользовательским интерфейсом.Одна операция, которую я хочу реализовать, состоит в том, чтобы раздуть меню для панели действий.Я пытаюсь делать подобные вещи, но ничего из этого не работает.

fun displayMenu() {

    rootView.toolbar.inflateMenu(R.menu.my_menu)

    rootView.toolbar.setOnMenuItemClickListener { item ->
        if (item.itemId == R.id.action_one) {
            listener.onActionOne()
        }

        true
    }
}

Я пробовал это:

activity.menuInflater.inflate(R.menu.my_menu, rootView.toolbar.menu)

и это:

rootView.toolbar.inflateMenu(R.menu.my_menu)

Но ни один изэто делает работу.Как я могу надуть это меню?

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

Это была моя глупая ошибка.

activity.menuInflater.inflate(R.menu.my_menu, rootView.toolbar.menu)

Работает отлично.Просто не забудьте вызвать его во время или после Activity.onCreateOptionMenu.Полный пример того, как это работает, выглядит примерно так:

public class MyActivity extends AppCompatActivity {

@Inject
MyView myView;

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(myView.getRootView());
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    myView.displayMenu();
    return super.onCreateOptionsMenu(menu);
}

}

public class MyViewImpl implements MyView {

    @Override
    public void displayMenu() {
        activity.getMenuInflater().inflate(
            R.menu.categories_modification_menu,
            rootView.findViewById(R.id.toolbar).getMenu()
        )
    }

}

Я раньше использовал displayMenu () из Activity.onCreate ... Извините, что потратил ваше время, особенно я не опубликовал эту часть, так как думал, что это так.не имеет отношения к вопросу ...

0 голосов
/ 13 декабря 2018

Я не знаю, как кодировать в Kotlin.Вот как я делаю в Java.Просто переопределите onCreateOptionsMenu() метод в вашем классе Activity.

@Override
public boolean onCreateOptionsMenu(Menu menu) {

    getMenuInflater().inflate(R.menu.my_menu, menu);

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...