Android IllegalStateException:无法执行活动的方法-发生了什么问题?
我正在尝试创建一个列表视图,其中包含多个可单击布局的项目。在此上下文中,listview是联系人列表。listview中的每一行代表一个单独的联系人,listview项上的每个按钮都应触发与该联系人相关的操作,例如查看和预订约会 每个listview项的XML:Android IllegalStateException:无法执行活动的方法-发生了什么问题?,android,listview,illegalstateexception,Android,Listview,Illegalstateexception,我正在尝试创建一个列表视图,其中包含多个可单击布局的项目。在此上下文中,listview是联系人列表。listview中的每一行代表一个单独的联系人,listview项上的每个按钮都应触发与该联系人相关的操作,例如查看和预订约会 每个listview项的XML: <LinearLayout android:id="@+id/layoutBookAppt" android:layout_width="56dp" android:layout_height="fill_
<LinearLayout
android:id="@+id/layoutBookAppt"
android:layout_width="56dp"
android:layout_height="fill_parent"
android:layout_alignBottom="@+id/divider"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:gravity="center_horizontal|center_vertical"
android:orientation="vertical"
android:background="@drawable/list_selector_flatcolour"
android:onClick="newAppt" >
<ImageView
android:id="@+id/apptNew"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:src="@drawable/appt_new" />
</LinearLayout>
<RelativeLayout
android:id="@+id/layoutInfo"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:padding="8dp"
android:layout_toStartOf="@id/layoutBookAppt"
android:layout_toLeftOf="@id/layoutBookAppt"
android:onClick="viewCustomer"
android:background="@drawable/list_selector_flatcolour" >
<!-- Various contact information here, name, number etc -->
</RelativeLayout>
logcat中的异常:
09-26 09:37:38.070: E/AndroidRuntime(766): FATAL EXCEPTION: main
09-26 09:37:38.070: E/AndroidRuntime(766): java.lang.IllegalStateException: Could not execute method of the activity
09-26 09:37:38.070: E/AndroidRuntime(766): at android.view.View$1.onClick(View.java:3704)
09-26 09:37:38.070: E/AndroidRuntime(766): at android.view.View.performClick(View.java:4232)
09-26 09:37:38.070: E/AndroidRuntime(766): at android.view.View$PerformClick.run(View.java:17298)
09-26 09:37:38.070: E/AndroidRuntime(766): at android.os.Handler.handleCallback(Handler.java:615)
09-26 09:37:38.070: E/AndroidRuntime(766): at android.os.Handler.dispatchMessage(Handler.java:92)
09-26 09:37:38.070: E/AndroidRuntime(766): at android.os.Looper.loop(Looper.java:137)
09-26 09:37:38.070: E/AndroidRuntime(766): at android.app.ActivityThread.main(ActivityThread.java:4921)
09-26 09:37:38.070: E/AndroidRuntime(766): at java.lang.reflect.Method.invokeNative(Native Method)
09-26 09:37:38.070: E/AndroidRuntime(766): at java.lang.reflect.Method.invoke(Method.java:511)
09-26 09:37:38.070: E/AndroidRuntime(766): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027)
09-26 09:37:38.070: E/AndroidRuntime(766): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
09-26 09:37:38.070: E/AndroidRuntime(766): at dalvik.system.NativeStart.main(Native Method)
09-26 09:37:38.070: E/AndroidRuntime(766): Caused by: java.lang.reflect.InvocationTargetException
09-26 09:37:38.070: E/AndroidRuntime(766): at java.lang.reflect.Method.invokeNative(Native Method)
09-26 09:37:38.070: E/AndroidRuntime(766): at java.lang.reflect.Method.invoke(Method.java:511)
09-26 09:37:38.070: E/AndroidRuntime(766): at android.view.View$1.onClick(View.java:3699)
09-26 09:37:38.070: E/AndroidRuntime(766): ... 11 more
09-26 09:37:38.070: E/AndroidRuntime(766): Caused by: java.lang.NullPointerException
09-26 09:37:38.070: E/AndroidRuntime(766): at com.example.myapp.CustListActivity.newAppt(CustListActivity.java:110)
09-26 09:37:38.070: E/AndroidRuntime(766): ... 14 more
因此,基本上我想做的是,当用户按下listview项时,能够获得两位信息
onItemClickListener
来获取行位置,但这仅在按下列表项本身时触发,而不会触发其中的任何视图
使用我的newAppt()
和viewCustomer()
函数,我试图使用getTag()
获取行位置(我不确定这是否是最好的方法,但我正在尝试任何方法)-但是getTag()
总是返回null,这让我完全不知所措
我走对了吗?如果不是,那么获取行和被按下的视图的最佳方法是什么
(编辑:
Gen.popup
是我自己的土司速记方法)。替换下面的代码
ViewHolder vh = (ViewHolder)view.getTag();
到
这一行为您提供了单击的位置。您正在将
@+id/layoutBookAppt
布局设置为newAppt
方法的onClick
属性。在那里,getTag()
确实是空的。但它与ListView子视图的标记不同。这是LinearLayout
的标记
所以你在做一些毫无意义的事。。。我的回答是另一个问题:你打算用这个方法做什么?发布你的logcat输出。@JiteshDalsaniya EditedLogcat对你很好:
引起的原因:java.lang.NullPointerException
在com.example.myapp.CustListActivity.newAppt(CustListActivity.java:110)
那么谁是Gen
?因为它似乎是空的Gen.popup()。编辑了这个问题。之前,我尝试了int pos=listview.getPositionForView(view)
,但当视图开始回收时,它返回了错误的位置。但是将视图更改为视图.getParent()
效果惊人!非常感谢,这就是我想要的:)但它不是ListView子视图的相同标记。这是LinearLayout的标签。
09-26 09:37:38.070: E/AndroidRuntime(766): FATAL EXCEPTION: main
09-26 09:37:38.070: E/AndroidRuntime(766): java.lang.IllegalStateException: Could not execute method of the activity
09-26 09:37:38.070: E/AndroidRuntime(766): at android.view.View$1.onClick(View.java:3704)
09-26 09:37:38.070: E/AndroidRuntime(766): at android.view.View.performClick(View.java:4232)
09-26 09:37:38.070: E/AndroidRuntime(766): at android.view.View$PerformClick.run(View.java:17298)
09-26 09:37:38.070: E/AndroidRuntime(766): at android.os.Handler.handleCallback(Handler.java:615)
09-26 09:37:38.070: E/AndroidRuntime(766): at android.os.Handler.dispatchMessage(Handler.java:92)
09-26 09:37:38.070: E/AndroidRuntime(766): at android.os.Looper.loop(Looper.java:137)
09-26 09:37:38.070: E/AndroidRuntime(766): at android.app.ActivityThread.main(ActivityThread.java:4921)
09-26 09:37:38.070: E/AndroidRuntime(766): at java.lang.reflect.Method.invokeNative(Native Method)
09-26 09:37:38.070: E/AndroidRuntime(766): at java.lang.reflect.Method.invoke(Method.java:511)
09-26 09:37:38.070: E/AndroidRuntime(766): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027)
09-26 09:37:38.070: E/AndroidRuntime(766): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
09-26 09:37:38.070: E/AndroidRuntime(766): at dalvik.system.NativeStart.main(Native Method)
09-26 09:37:38.070: E/AndroidRuntime(766): Caused by: java.lang.reflect.InvocationTargetException
09-26 09:37:38.070: E/AndroidRuntime(766): at java.lang.reflect.Method.invokeNative(Native Method)
09-26 09:37:38.070: E/AndroidRuntime(766): at java.lang.reflect.Method.invoke(Method.java:511)
09-26 09:37:38.070: E/AndroidRuntime(766): at android.view.View$1.onClick(View.java:3699)
09-26 09:37:38.070: E/AndroidRuntime(766): ... 11 more
09-26 09:37:38.070: E/AndroidRuntime(766): Caused by: java.lang.NullPointerException
09-26 09:37:38.070: E/AndroidRuntime(766): at com.example.myapp.CustListActivity.newAppt(CustListActivity.java:110)
09-26 09:37:38.070: E/AndroidRuntime(766): ... 14 more
ViewHolder vh = (ViewHolder)view.getTag();
final int position = listview.getPositionForView((View) view.getParent());