我试图通过onCreateOptionsMenu方法中的一些简单迭代来扩展我的活动中的操作栏,但它不起作用。它只是显示操作栏,只显示活动的名称,没有任何项目。
这是我的xml菜单代码(ringtones.xml):
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="activities.RingtonesActivity" >
<item android:id="@+id/action_add"
android:icon="@drawable/add"
android:title="@string/action_add_ringtone"
android:showAsAction="ifRoom" />
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:title="@string/action_settings"
android:showAsAction="never"/>
</menu>
这是我对onCreateOptionsMenu的实现:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.ringtones, menu);
return true;
}
这是动作栏的图像:
另外,我扩展了“ActionBarActivity”类。我在这做错了什么?
编辑:我刚刚注意到即使我在onCreateOptionsMenu中返回false,操作栏仍然显示为原样!到底是怎么回事?
改变这个
android:showAsAction="never"
至
android:showAsAction="always"
请更改您的代码。代替
android:showAsAction="ifRoom"
and
android:showAsAction="never"
做
android:showAsAction="always"
请在ringtones.xml中添加此行
xmlns:app="http://schemas.android.com/apk/res-auto"
如果您使用支持库作为操作栏,我会提供一个链接。请仔细阅读。 link请告诉我,如果它对您有用。
我知道这是一个老问题,但我有这个问题,因为我忘记添加这个我的片段:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setHasOptionsMenu(true)
}
另外,不要忘记添加:
override fun onOptionsItemSelected(item: MenuItem): Boolean {
if (item.itemId == R.id.action_delete) {
//Do something
return true
}
return super.onOptionsItemSelected(item)
}