[英]Menu View creation in lifecycle
我需要在不指定自定义View
情况下获取对MenuItem
的相应View
的引用。 当从Activity#onCreate()
或onCreateOptionsMenu()
调用时,将findViewById()
与菜单项的 ID 一起使用会返回 null。 但是,正如其他问题的一些答案所指出的那样, findViewById()
在从onOptionsItemSelected()
或从Activity#onCreate()
发布的 runnable 调用时确实返回视图,就像这样......
new Handler().post(new Runnable() {
@Override
public void run() {
findViewById(R.id.some_view);
}
});
因此,似乎在某些时候,Android 会采用您在onCreateOptionsMenu()
填充的Menu
并创建显示在屏幕上的相应View
。 从onCreate()
发布的Runnable
恰好在发生之后运行。 但是,假设情况总是如此,而不是实际侦听某种menuViewsCreated()
事件,这感觉太menuViewsCreated()
。
所以这使我想到我的问题-没有Android的提供,告诉开发商菜单事件View
■找创建?
为时已晚,但它可能对其他人有所帮助,您必须在onCreateOptionsMenu(Menu menu)
使用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;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.