Меню не отображается на панели действий - PullRequest
0 голосов
/ 26 апреля 2018

Я пытаюсь создать меню для моего actvity. Но он не может отображаться на actionbar, как я. Просто помогите мне, где не так.

Это мое меню .

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.example.sship.MainActivity" 
xmlns:app="http://schemas.android.com/apk/res-auto">

<item
    android:id="@+id/search"
    android:icon="@drawable/ic_action_search"
    android:title="@string/menu_item_search"
    android:showAsAction="always"/>

<item 
    android:id="@+id/about"
    android:orderInCategory="1"
    android:title="@string/menu_item_about_app"/>

<item 
    android:id="@+id/help"
    android:orderInCategory="2"
    android:title="@string/menu_item_help"/>

Это моя активность

public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

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

    return super.onCreateOptionsMenu(menu);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    switch(item.getItemId()){
        case R.id.search:
            Toast.makeText(this, "Search button selected", Toast.LENGTH_SHORT).show();
            break;
        case R.id.about:
            Toast.makeText(this, "About button selected", Toast.LENGTH_SHORT).show();
            break;
        case R.id.help:
            Toast.makeText(this, "Help button selected", Toast.LENGTH_SHORT).show();
            break;
    }
    return super.onOptionsItemSelected(item);
}}

И это результат

result

Ответы [ 3 ]

0 голосов
/ 26 апреля 2018

До Android 4.4, устройство имеет аппаратную кнопку меню, поэтому с помощью аппаратной кнопки активируется меню переполнения действий, поэтому значок переполнения не отображается.

Вы должны сделать это принудительно в устройствах до 4.4 , чтобы показать кнопку переполнения действия. Попробуйте приведенный ниже код в методе onCreate() вашей деятельности

ViewConfiguration configure = ViewConfiguration.get(context);
Field menuField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey");
if (menuField != null) {
    menuField.setAccessible(true);
    menuField.setBoolean(config, false);
}
0 голосов
/ 26 апреля 2018

Вы должны проверить тему приложения, нет ли в ней действия. Будет полезно, если вы поделитесь своей темой или styles.xml

0 голосов
/ 26 апреля 2018

Я предполагаю, что вы используете панель инструментов по умолчанию, определенную в файле styles.xml, например Theme.AppCompat.Light.DarkActionBar.

Я бы рекомендовал использовать панель действий поддержки, как описано в документации здесь .

Подсказка: В документах указывается, что вы должны определить тему NoActionBar в манифесте приложения, но вы также можете установить ее в файле styles.xml, чтобы у вас было больше возможностей контролировать использование этой панели действий.

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