android 5和onClick的xml布局
我在xml中为imageButton设置了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
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
所在的布局文件中设置了noandroid: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
}