在以下代码中,findViewById返回null:
public void onCreateContextMenu(ContextMenu menu, View view, ContextMenuInfo menuInfo) {
if (view == this.getListView()) {
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)menuInfo;
final Message clickedMessage = this.adapter.getItem(info.position);
menu.setHeaderTitle(clickedMessage.getTitle());
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.showuser_context, menu);
View button = this.findViewById(R.id.showuser_contextmenu_showthread);
// I would like to call button.setOnClickListener here
}
res / menu / showuser_context.xml:
<?xml version="1.0" encoding="utf-8"?>
<menu
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/showuser_contextmenu_showthread" android:title="@string/showuser_contextmenu_showthread"></item>
<item android:id="@+id/showuser_contextmenu_reply" android:title="@string/showuser_contextmenu_reply"></item>
</menu>
我试着去清洁&#34; (项目 - &gt;从eclipse主菜单中清除)项目,但它仍然不起作用。
此致 ProgVal
答案 0 :(得分:1)
尝试:
View button = menu.findViewById(R.id.showuser_contextmenu_showthread);
而不是:
View button = this.findViewById(R.id.showuser_contextmenu_showthread);
答案 1 :(得分:1)
你不能通过findViewById()获取菜单项; 相反,你应该使用
@Override
public boolean onContextItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.showuser_contextmenu_showthread)
//Your stuff
return true;
}
return super.onContextItemSelected(item);
}