Ответ 1
Если вы используете фрагмент, вам это нужно в onCreate():
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
Я новичок в Android, и я пытался добавить простую кнопку добавления, как указано ниже
list_menu.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/menu_insert"
android:icon="@android:drawable/ic_menu_add"
android:title="@string/menu_insert"
/>
</menu>
MyActivity.java
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
super.onCreateOptionsMenu(menu);
getMenuInflater().inflate(R.menu.list_menu, menu);
return true;
}
Я прочитал в серии книг "Манекены", что ic_menu_add уже есть в ресурсах, и мне не нужно его добавлять, но когда я запускаю этот код, он не отображается. Я попытался добавить пользовательский значок с тем же именем, но кнопка не существует. Может кто-нибудь помочь мне с этим, пожалуйста.
Если вы используете фрагмент, вам это нужно в onCreate():
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
Я имел дело с той же проблемой.. прочитал несколько запросов и документации.. Надеюсь, это может вам помочь.
Вот мой XML файл для меню.
<item
android:id="@+id/action_send_feedback"
android:orderInCategory="100"
android:showAsAction="always"
android:title="@string/action_send_feedback"/>
<item
android:id="@+id/action_share_app"
android:orderInCategory="100"
android:showAsAction="ifRoom"
android:title="@string/action_share_app"
android:icon="@drawable/ic_action_share" />
<item
android:id="@+id/action_rate_app"
android:orderInCategory="100"
android:showAsAction="never"
android:title="@string/action_rate_app"/>
Здесь указан код JAVA.
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
Для телефонов Android, у которых есть кнопка выбора (внизу телефона), появляется пункт меню, который отображается как "Приказ" = "никогда", когда кнопка нажата. Или они будут отображаться обычно в меню параметров панели действий..
Ссылка: http://developer.android.com/guide/topics/ui/menus.html#options-menu
Не требуется вызов метода super()
. Попробуйте заменить onCreateOptionsMenu
на это:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.list_menu, menu);
return true;
}
Если вы установите TargetSDK в манифесте на 5, значок появится.
Если вы ориентируетесь на новый Android SDK (3.0 и выше), панель действий переходит в меню и по умолчанию не отображает значки.
Вы можете попробовать следующее:
Пропустили ли вы эти строки в файле xml файла один раз
XMLNS: инструменты = "http://schemas.android.com/tools"
инструменты: контекст = "MainActivity"
Если вы пропустили это, это вызывает проблемы при отображении меню параметров
Привет надеюсь, что код ниже поможет вам:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">@color/primary</item>
<item name="colorPrimaryDark">@color/primaryDark</item>
</style>
Пожалуйста, укажите DarkActionBar в качестве темы, которую вы использовали в файле манифеста Android.
Я столкнулся с этой проблемой. Но в моем случае я добавил панель инструментов внутри Framelayout. Кроме того, я добавил еще один вид прокрутки с соответствием родителя. Теперь ScrollView взял управление щелчком, а не панель инструментов. Так что если вы используете FrameLayout, ваша панель инструментов должна быть самой верхней.
Добавить
app:showAsAction="always"
к пункту меню.
Я должен был добавить следующий код в xml активности:
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimary"
android:theme="@style/AppTheme"
app:popupTheme="@style/Theme.AppCompat.Light.DarkActionBar"
app:title="@string/app_name"
app:titleMarginStart="24dp"
app:titleTextColor="@android:color/white" />
Затем к активности. OnCreate
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
И
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//super.onCreateOptionsMenu(menu);
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
И фрагмент по созданию:
setHasOptionsMenu(true);