2015-10-27 2 views
2

Мое приложение имеет minSDKVersio=11 и targetSDKVersion=22. Я запускаю приложение на эмуляторе GalaxyNexus, работающем на API14.Панель инструментов не отображает значок переполнения

В моей деятельности есть панель инструментов в макете. Панель инструментов импортируется из библиотеки android.support.v7.widget.Toolbar.

Вот содержание ресурса меню для заполнения панели инструментов. Имя файла homeview_menu_common.xml

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

<item 
    android:id="@+id/homeview_toolbar_overflow_logout" 
    android:title="@string/homeview_toolbar_overflow_logout" 
    app:showAsAction="always"> 
</item> 
</menu> 

Моя проблема заключается в следующем: меню переполнения не отображается на всех. Поскольку GalaxyNexus не имеет кнопки аппаратных опций, меню переполнения должно быть видимым в Toolber. Я также считаю, что onCreatOptionsMenu(Menu menu) никогда не вызывается.

Обновление: Проводка кода активности

public class HomeView extends GenericActivity<HomeOps.View, HomeOps> implements HomeOps.View { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    //super.onCreate(savedInstanceState); 
    setContentView(R.layout.homeview_layout); 
    super.onCreate(savedInstanceState, HomeOps.class, this); 

    Toolbar toolbar = (Toolbar) findViewById(R.id.homeview_toolbar); 
    Boolean show = toolbar.showOverflowMenu(); 

} 

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


} 
+0

Изменить приложение: showAsAction = "always" для приложения: showAsAction = "ifRoom". –

+0

можете ли вы подтвердить, что вы пытаетесь выполнить весь этот фрагмент внутри или внутри? – dex

+0

@dex Я пытаюсь сделать это внутри действия – Amit

ответ

0

1) Заменить app:showAsAction="always" по app:showAsAction="never"

2) Ваша основная реализация деятельности должна выглядеть так:

public class MainActivity extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main_activity); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.homeview_menu_common, menu); 
    return super.onCreateOptionsMenu(menu); 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case R.id.action_favorite: 
      // Do your stuff for favorite menu item 
      break; 

     case R.id.homeview_toolbar_overflow_logout: 
      // Do your stuff for homeview_toolbar_overflow_logout menu item 
      break; 
    } 

    return super.onOptionsItemSelected(item); 
} 

} 

3) Используйте Theme.AppCompat.Light.DarkActionBar в качестве вашу тему активности. Если вы не» т хочет добавить ActionBar из вашей темы, не забудьте вызвать setSupportActionBar(toolbar); в onCreate():

+0

Моя активность не может расширить AppCompatActivity, поскольку она уже расширяет другую деятельность как часть шаблона проектирования Model-View_Presenter – Amit

0

я, наконец, решить эту проблему следующим образом:

Используйте Toolbar.inflateMenu() раздувать пункты меню на панели инструментов. Используйте Toolbar.setOnMenuItemClickListener(), чтобы установить прослушиватель кликов.

Смежные вопросы