android 5和onClick的xml布局

android 5和onClick的xml布局,android,android-layout,android-5.0-lollipop,Android,Android Layout,Android 5.0 Lollipop,我在xml中为imageButton设置了android:onclick,并将该方法放在我的活动中。在低于5的安卓系统中,它工作正常,但在安卓5中,它会给我错误 我的图像按钮代码: <ImageButton android:id="@+id/photo_detail" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@draw

我在xml中为imageButton设置了
android:onclick
,并将该方法放在我的活动中。在低于5的安卓系统中,它工作正常,但在安卓5中,它会给我错误

我的图像按钮代码:

<ImageButton 
     android:id="@+id/photo_detail"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:src="@drawable/detail_icon"
     android:layout_alignParentLeft="true"
     android:layout_centerVertical="true"
     android:background="@drawable/image_background"
     android:onClick="photoDetailButtonMethod"/>
错误:

java.lang.IllegalStateException: Could not find a method photoDetailButtonMethod(View) in the activity class android.view.ContextThemeWrapper for onClick handler on view class android.widget.ImageButton with id 'photo_detail'
            at android.view.View$1.onClick(View.java:3994)
            at android.view.View.performClick(View.java:4756)
            at android.view.View$PerformClick.run(View.java:19749)
            at android.os.Handler.handleCallback(Handler.java:739)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5221)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
     Caused by: java.lang.NoSuchMethodException: photoDetailButtonMethod [class android.view.View]
            at java.lang.Class.getMethod(Class.java:664)
            at java.lang.Class.getMethod(Class.java:643)
            at android.view.View$1.onClick(View.java:3987)
            at android.view.View.performClick(View.java:4756)
            at android.view.View$PerformClick.run(View.java:19749)
            at android.os.Handler.handleCallback(Handler.java:739)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5221)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
通过查看错误,我可以看到它在
android.view.ContextThemeWrapper
类中搜索我的方法,因此它以
NoSuchMethodException
结束

我想不出怎么解决这个问题,有什么帮助吗

1) 我已经在布局的根目录中添加了
tools:context=“.PhotoViewerActivity”


2)
activity
通过
appCompat
主题扩展了
ActionBarActivity

我找不到真正的问题,可能是eclipse和api 21之间的不兼容或其他问题


现在,我只是为该按钮设置了一个
onClickListener

最后我发现了问题

我只需要将xml布局与活动关联起来。为此,请在xml布局的“设计”选项卡中确保选择了正确的活动


确保您的onClick方法

public void photoDetailButtonMethod(View theButton)
{
  //something
}

onCreate()
方法外部和活动类中编写

我有一个非常类似的问题,它只发生在Android棒棒糖上,而在旧版本上效果很好。看起来像是5.0中的bug或未记录的功能

确保在
ImageButton
所在的布局文件中设置了no
android:theme
,即没有类似的设置:

android:theme="@style/Base.Theme.AppCompat.Light"
相反,请在
AndroidManifest.xml
application元素中定义应用程序主题:

<application 
         ...
         android:theme="@android:style/Theme.Holo.Light"
         ...  >


当您在片段中声明了
public void onClick(View View)
方法而不是activity

这只是google play服务的问题,与您的编码或设置无关

只需更新手机的google play服务,并在build.gradle文件中添加依赖项,如:

编译'com.google.android.gms:play services:7.5.0'

我用一个“menuItem”来做这件事,有这样一个:

public void photoDetailButtonMethod(View theButton)
{
  //something
}
这对于menuItems是错误的。那么你必须有这个:

public void photoDetailButtonMethod(MenuItem theButton)
{
  //something
}
它抛出的错误与OP提到的相同


希望这对某人有帮助…

这对我来说不起作用。不管怎样,还是要谢谢你-在布局文件中添加一个上下文是有意义的。
public void photoDetailButtonMethod(MenuItem theButton)
{
  //something
}