我陷入困境,只是筋疲力尽,我在这里做错了什么,我需要做些什么才能让它正常工作?感谢
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:showAsAction="ifRoom" />
在mainActivity中,我添加了一种方法来在另一个Activity中激活相机的意图。
/**
* Method to handle launching the Camera view activity.
* @param view
*/
public void showCamera(View view) {
}
但是我收到了这个错误:
无法在com.shindiggy.shindiggy.MainActivity类中解析onClick处理程序showCamera中的菜单项
答案 0 :(得分:3)
我通过将方法更改为onCameraClick(MenuItem项)并更新onClick以反映其名称“onCameraClick”来解决此问题。
答案 1 :(得分:1)
似乎你已经解决了它,但这是困扰我的事情,绝对是你想在实际文档中阅读答案的东西。 (只是为了确保你提出的任何解决方案适用于所有手机 - 而不仅仅是你自己......)
请看这里:https://developer.android.com/guide/topics/resources/menu-resource#item-element
菜单中项目的android:onClick属性需要使用 MenuItem 作为参数的公共方法。
请注意,这与
。http://developer.android.com/reference/android/widget/Button.html http://developer.android.com/reference/android/R.attr.html#onClick
这里需要一个以View为参数的方法。
答案 2 :(得分:0)
我不相信menuItem
有onClick()
。使用onOptionsItemSelected instead. Use the
menuItem id`来了解点击了哪个项目。
@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;
这适用于OptionsMenu
,但也会讨论ContextMenu
s
答案 3 :(得分:0)
不要使用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);
}
答案 4 :(得分:0)
根据Android文档-https://developer.android.com/guide/topics/resources/menu-resource#item-element
android:onClick
方法名称。此菜单项为时的调用方法 点击。该方法必须在活动中声明为public和 接受MenuItem作为其唯一参数,该参数指示该项 点击。此方法优先于以下标准回调 onOptionsItemSelected()。请参阅底部的示例。
警告:如果 您使用ProGuard(或类似工具)混淆了代码后,请确保 从重命名中排除您在此属性中指定的方法, 因为它会破坏功能。
在API级别11中引入。