MenuItem текст и значок не устанавливаются - PullRequest
0 голосов
/ 05 июня 2018

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

    @Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    super.onCreateOptionsMenu(menu);
    final MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.activity_main_drawer, menu);
    return true;
}

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    if (Build.VERSION.SDK_INT > 11) {
        invalidateOptionsMenu();
        MenuItem item1 = menu.findItem(R.id.nav_all);
        MenuItem item2 = menu.findItem(R.id.nav_beef);
        MenuItem item4 = menu.findItem(R.id.nav_chicken);
        Log.d("ISVEG", MeApplication.getIsVeg().toString());
        if (MeApplication.getIsVeg()) {
            item1.setTitle("Omlets");
            item1.setIcon(ContextCompat.getDrawable(this, R.drawable.eggs));
            item2.setTitle("Broccoli");
            item2.setIcon(ContextCompat.getDrawable(this, R.drawable.broccoli));
            item4.setTitle("Tomato");
            item4.setIcon(ContextCompat.getDrawable(this, R.drawable.tomato));

        } else {
            item1.setTitle("All meat");
            item1.setIcon(ContextCompat.getDrawable(this, R.drawable.allmeat));
            item2.setTitle("Beef");
            item2.setIcon(ContextCompat.getDrawable(this, R.drawable.steak));
            item4.setTitle("Chicken");
            item4.setIcon(ContextCompat.getDrawable(this, R.drawable.thanksgiving));
        }
    }
    return super.onPrepareOptionsMenu(menu);
}

1 Ответ

0 голосов
/ 05 июня 2018

Удалить invalidateOptionsMenu(); из onPrepareOptionsMenu.Это не требуется, поскольку onPrepareOptionsMenu подготовит стандартное меню параметров экрана для отображения.Это вызывается перед отображением меню, каждый раз, когда оно отображается

...