我已经阅读了很多类似的主题,但没有一个解决方案适合我。我正在获得MenuItem,但是当我尝试获取它的视图时,我得到一个 null 视图。我已经尝试将代码放在 onPrepareOptionsMenu 中,使用 MenuItemCompat 和其他sutff获取视图。
activity_main.xml,工具栏在哪里
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
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.MainActivity">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay"
android:elevation="4dp"/>
</android.support.design.widget.AppBarLayout>
...
</android.support.design.widget.CoordinatorLayout>
menu_main.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.MainActivity">
<item
android:id="@+id/action_location"
android:orderInCategory="0"
android:icon="@android:drawable/ic_dialog_map"
android:title="Localização"
app:showAsAction="ifRoom" />
...
</menu>
onCreate方法
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
toolbar = (Toolbar)findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
...
}
onCreateOptionsMenu方法
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
MenuItem menuItem = menu.findItem(R.id.action_location); // here is fine, found the item
View view = menuItem.getActionView(); // here is null
return super.onCreateOptionsMenu(menu);
}
答案 0 :(得分:0)
熟悉ActionView到底是什么。
只需指定menuItem
,即可获得有关它的所有属性,包括标题“Localização”。
如果您想获得点击“action_location”的结果,那么onOptionsItemSelected
可能是您需要的方法调用。