Android 不能';t解析菜单项onClick处理程序
我陷入困境,精疲力竭,我做错了什么?我需要做什么才能让它正常工作?谢谢 API 11 我在menu.xml中设置了一个项目:Android 不能';t解析菜单项onClick处理程序,android,eclipse,Android,Eclipse,我陷入困境,精疲力竭,我做错了什么?我需要做什么才能让它正常工作?谢谢 API 11 我在menu.xml中设置了一个项目: <item android:id="@+id/action_add_shindig" **android:onClick="showCamera"** android:icon="@drawable/shindig_new" android:title="@string/shindig_new" android:sho
<item android:id="@+id/action_add_shindig"
**android:onClick="showCamera"**
android:icon="@drawable/shindig_new"
android:title="@string/shindig_new"
android:showAsAction="ifRoom" />
但我得到了这个错误:
无法解析com.shindigy.shindigy.MainActivity类中的菜单项onClick处理程序showCamera我不相信
menuItem
具有onClick()
。改为使用选项ItemSelected。使用menuItem
id`了解单击了哪个项目
这是一个
选项菜单
,但它也讨论了上下文菜单
s我通过将方法更改为onCameraClick(菜单项)并更新onClick以反映其名称“onCameraClick”来解决它。看起来您已经解决了它,但这是困扰我的一件事,你肯定想在实际文档中阅读答案。(只是为了确保你提出的任何修复方案都适用于所有手机,而不仅仅是你自己的…)
看这里:
菜单中项的android:onClick属性需要一个公共方法,参数为MenuItem
请注意,这与按钮不同
这里需要一个以视图为参数的方法。不要使用OnClick方法 在下面的方法中使用if语句:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
else if (id==R.id.action_other)
{
Toast toast=Toast.makeText(this, "Other Clicked.", Toast.LENGTH_LONG);
toast.show();
}
else if (id==R.id.action_Exit)
{
finish();
}
return super.onOptionsItemSelected(item);
}
根据安卓文件- 安卓:onClick 方法名。打开此菜单项时要调用的方法 点击。该方法必须在活动中声明为public和 接受MenuItem作为其唯一参数,该参数指示该项 点击。此方法优先于要调用的标准回调 onOptionsItemSelected()。请参见底部的示例 警告:如果 如果使用ProGuard(或类似工具)混淆代码,请确保 从重命名中排除在此属性中指定的方法, 因为它会破坏功能 在API级别11中引入
menuItem确实有一个onClick()
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection
switch (item.getItemId()) {
case R.id.action_add_shindig:
// run your showCamera code or call that method
return true;
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
else if (id==R.id.action_other)
{
Toast toast=Toast.makeText(this, "Other Clicked.", Toast.LENGTH_LONG);
toast.show();
}
else if (id==R.id.action_Exit)
{
finish();
}
return super.onOptionsItemSelected(item);
}