问题描述
我使用gridview显示数字, 所以,如果我点击任何数字,则应开始下一个活动. 我尝试了这个代码,但应用程序崩溃
private GridView gridView = null; gridView.setOnClickListener(new OnClickListener() { public void onClick(View v5) { setContentView(R.layout.Abc); Intent myIntent = new Intent(getApplicationContext(),Abc.class); startActivity(myIntent); } });
以下是gridview
的XML代码<GridView android:id="@+id/month_gridView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/calendar_days" android:layout_marginLeft="7dp" android:layout_marginRight="8dp" android:background="@color/grid_background" android:fadingEdge="none" android:gravity="top|left" android:horizontalSpacing="2dp" android:listSelector="@android:color/transparent" android:numColumns="7" android:padding="1dp" android:stretchMode="columnWidth" android:verticalSpacing="2dp"> </GridView>
logcat 文件日志
02-04 00:10:50.603: D/AndroidRuntime(341): Shutting down VM 02-04 00:10:50.603: W/dalvikvm(341): threadid=1: thread exiting with uncaughtexception(group=0x40015560) 02-04 00:10:50.635: E/AndroidRuntime(341): FATAL EXCEPTION: main 02-04 00:10:50.635: E/AndroidRuntime(341): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.indianic.demo.calendark/com.indianic.demo.calendark.CalendarActivity}: java.lang.RuntimeException: Don't call setOnClickListener for an AdapterView. You probably want setOnItemClickListener instead 02-04 00:10:50.635: E/AndroidRuntime(341): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647) 02-04 00:10:50.635: E/AndroidRuntime(341): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 02-04 00:10:50.635: E/AndroidRuntime(341): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 02-04 00:10:50.635: E/AndroidRuntime(341): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 02-04 00:10:50.635: E/AndroidRuntime(341): at android.os.Handler.dispatchMessage(Handler.java:99) 02-04 00:10:50.635: E/AndroidRuntime(341): at android.os.Looper.loop(Looper.java:123) 02-04 00:10:50.635: E/AndroidRuntime(341): at android.app.ActivityThread.main(ActivityThread.java:3683) 02-04 00:10:50.635: E/AndroidRuntime(341): at java.lang.reflect.Method.invokeNative(Native Method) 02-04 00:10:50.635: E/AndroidRuntime(341): at java.lang.reflect.Method.invoke(Method.java:507) 02-04 00:10:50.635: E/AndroidRuntime(341): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 02-04 00:10:50.635: E/AndroidRuntime(341): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 02-04 00:10:50.635: E/AndroidRuntime(341): at dalvik.system.NativeStart.main(Native Method) 02-04 00:10:50.635: E/AndroidRuntime(341): Caused by: java.lang.RuntimeException: Don't call setOnClickListener for an AdapterView. You probably want setOnItemClickListener instead 02-04 00:10:50.635: E/AndroidRuntime(341): at android.widget.AdapterView.setOnClickListener(AdapterView.java:750) 02-04 00:10:50.635: E/AndroidRuntime(341): at com.indianic.demo.calendark.CalendarActivity.onCreate(CalendarActivity.java:126) 02-04 00:10:50.635: E/AndroidRuntime(341): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 02-04 00:10:50.635: E/AndroidRuntime(341): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 02-04 00:10:50.635: E/AndroidRuntime(341): ... 11 more 02-04 00:10:53.203: I/Process(341): Sending signal. PID: 341 SIG: 9
推荐答案
gridview就像一个listview
你应该使用这样的东西
gridView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View v, int position, long id) { // DO something } });
代码不完美
参考参见 http://developer.android.com/reference/android/widget/gridview. html
其他推荐答案
您应该使用OnITemClickListener而不是OnClickListener.
其他推荐答案
gridview.onclicklistener()将是网格作为视图的侦听器. gridview.setonitemclickListener()将是网格中的项目的侦听器.它将将位置作为参数,该参数将指示您单击的项目.父参数将指示GridView本身.您可以使用它来基于项目的维度.像
这样的东西view.setMinHeight(parent.getHeight()/n);
问题描述
i used gridview to display numbers, so if i click on any number the next activity should start. i tried this code but the app crashes
private GridView gridView = null; gridView.setOnClickListener(new OnClickListener() { public void onClick(View v5) { setContentView(R.layout.Abc); Intent myIntent = new Intent(getApplicationContext(),Abc.class); startActivity(myIntent); } });
here is the xml code for gridview
<GridView android:id="@+id/month_gridView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/calendar_days" android:layout_marginLeft="7dp" android:layout_marginRight="8dp" android:background="@color/grid_background" android:fadingEdge="none" android:gravity="top|left" android:horizontalSpacing="2dp" android:listSelector="@android:color/transparent" android:numColumns="7" android:padding="1dp" android:stretchMode="columnWidth" android:verticalSpacing="2dp"> </GridView>
logcat file log
02-04 00:10:50.603: D/AndroidRuntime(341): Shutting down VM 02-04 00:10:50.603: W/dalvikvm(341): threadid=1: thread exiting with uncaughtexception(group=0x40015560) 02-04 00:10:50.635: E/AndroidRuntime(341): FATAL EXCEPTION: main 02-04 00:10:50.635: E/AndroidRuntime(341): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.indianic.demo.calendark/com.indianic.demo.calendark.CalendarActivity}: java.lang.RuntimeException: Don't call setOnClickListener for an AdapterView. You probably want setOnItemClickListener instead 02-04 00:10:50.635: E/AndroidRuntime(341): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647) 02-04 00:10:50.635: E/AndroidRuntime(341): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 02-04 00:10:50.635: E/AndroidRuntime(341): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 02-04 00:10:50.635: E/AndroidRuntime(341): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 02-04 00:10:50.635: E/AndroidRuntime(341): at android.os.Handler.dispatchMessage(Handler.java:99) 02-04 00:10:50.635: E/AndroidRuntime(341): at android.os.Looper.loop(Looper.java:123) 02-04 00:10:50.635: E/AndroidRuntime(341): at android.app.ActivityThread.main(ActivityThread.java:3683) 02-04 00:10:50.635: E/AndroidRuntime(341): at java.lang.reflect.Method.invokeNative(Native Method) 02-04 00:10:50.635: E/AndroidRuntime(341): at java.lang.reflect.Method.invoke(Method.java:507) 02-04 00:10:50.635: E/AndroidRuntime(341): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 02-04 00:10:50.635: E/AndroidRuntime(341): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 02-04 00:10:50.635: E/AndroidRuntime(341): at dalvik.system.NativeStart.main(Native Method) 02-04 00:10:50.635: E/AndroidRuntime(341): Caused by: java.lang.RuntimeException: Don't call setOnClickListener for an AdapterView. You probably want setOnItemClickListener instead 02-04 00:10:50.635: E/AndroidRuntime(341): at android.widget.AdapterView.setOnClickListener(AdapterView.java:750) 02-04 00:10:50.635: E/AndroidRuntime(341): at com.indianic.demo.calendark.CalendarActivity.onCreate(CalendarActivity.java:126) 02-04 00:10:50.635: E/AndroidRuntime(341): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 02-04 00:10:50.635: E/AndroidRuntime(341): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 02-04 00:10:50.635: E/AndroidRuntime(341): ... 11 more 02-04 00:10:53.203: I/Process(341): Sending signal. PID: 341 SIG: 9
推荐答案
GridView is Like a ListView
You should use some thing like this
gridView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View v, int position, long id) { // DO something } });
the code is not perfect
for reference see http://developer.android.com/reference/android/widget/GridView.html
其他推荐答案
You should use onItemClickListener instead of onClickListener.
其他推荐答案
gridView.onClickListener() would be the listener for the grid as a view. gridView.setOnItemClickListener() would be the listener for an item in the grid. It would take the position as a parameter that would indicate the item you are clicking on. The parent parameter would indicate the gridView itself. You could use this to base the dimension of the item. Something like
view.setMinHeight(parent.getHeight()/n);