我需要在没有specifying a custom one的情况下获得MenuItem
对应View
的引用。从findViewById()
或Activity#onCreate()
调用时,将onCreateOptionsMenu()
与菜单项的ID一起使用时返回null。但是,正如其他一些answers问题指出的那样,findViewById()
在从onOptionsItemSelected()
或Activity#onCreate()
中发布的可运行状态调用时会返回视图 ,就像这样...
new Handler().post(new Runnable() {
@Override
public void run() {
findViewById(R.id.some_view);
}
});
因此,似乎在某些时候,Android会获取您在Menu
中填充的onCreateOptionsMenu()
并创建屏幕上显示的相应View
。从Runnable
发布的onCreate()
发生以便在发生后运行。但是,如果认为情况总是如此,而不是真正倾听某种menuViewsCreated()
事件,那真是太可笑了。
所以这让我想到了我的问题 - Android提供了一个事件,告诉开发人员菜单View
已被创建?
答案 0 :(得分:0)
已经晚了,但可能会对其他人有所帮助
您必须在new Handler()
onCreateOptionsMenu(Menu menu)
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.section, menu);
new Handler().post(new Runnable() {
@Override
public void run() {
final View menuItemView = findViewById(R.id.menu_item);
//TODO
}
});
return true;
}