我是Android的新手,我想把Click事件放在XML而不是java上,我在Activity类上实现了以下方法
public void onInfoClick(View v){
switch(v.getId()) {
case R.id.ivAcceptAmericanExpress:
showPopup(v, getString(R.string.apt_american_express));
break;
}
}
在XML中,我完成了以下代码
<ImageView
android:id="@+id/ivAcceptAmericanExpress"
android:layout_width="24.286dp"
android:layout_height="24.286dp"
android:layout_centerVertical="true"
android:layout_marginLeft="10dp"
android:layout_toRightOf="@id/txtAcceptAmericanExpress"
android:src="@drawable/info_image"
android:onClick="onInfoClick" />
但是当我点击图片时,我收到以下错误
Could not execute method of the activity
android.view.View$1.onClick(View.java:4021)
android.view.View.performClick(View.java:4781)
android.view.View$PerformClick.run(View.java:19873)
android.os.Handler.handleCallback(Handler.java:739)
android.os.Handler.dispatchMessage(Handler.java:95)
android.os.Looper.loop(Looper.java:135)
android.app.ActivityThread.main(ActivityThread.java:5291)
java.lang.reflect.Method.invoke(Native Method)
java.lang.reflect.Method.invoke(Method.java:372)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699):: Cause : java.lang.reflect.InvocationTargetException
java.lang.reflect.Method.invoke(Native Method)
java.lang.reflect.Method.invoke(Method.java:372)
android.view.View$1.onClick(View.java:4016)
android.view.View.performClick(View.java:4781)
android.view.View$PerformClick.run(View.java:19873)
android.os.Handler.handleCallback(Handler.java:739)
android.os.Handler.dispatchMessage(Handler.java:95)
android.os.Looper.loop(Looper.java:135)
android.app.ActivityThread.main(ActivityThread.java:5291)
java.lang.reflect.Method.invoke(Native Method)
java.lang.reflect.Method.invoke(Method.java:372)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699)
答案 0 :(得分:0)
InvocationTargetException
通常指向您尝试执行的onClick
方法中的例外情况 - 在您的情况下是onInfoClick
方法 - 您可以通过评论{{1}来确认这一点1}},看看你是否仍然得到错误。确定问题后,您可以进行必要的更改以解决异常。您应该使用case-statement
围绕方法的主体以保证安全。