我有一个错误:setOnItemClickListener不能用于微调,什么是错的?
请好这是我的代码下面,我粘贴下面的错误消息:我想在微调setOnItemClickListener
上使用setOnItemClickListener
,是否允许?
@Override public void onItemClick(AdapterView arg0, View v, int index, long arg3) { if (quantity[index]=="Meter" ){ s1="Meter"; Toast.makeText(v.getContext(), "convert from meter",Toast.LENGTH_SHORT).show(); } } }); convertto.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView arg, View v1, int index1, long arg4) { if ((quantity[index1]=="Meter") && (s1.equalsIgnoreCase("Meter"))) { Toast.makeText(v1.getContext(), " to meter",Toast.LENGTH_SHORT).show(); var2=var1; lresult.setText("" + var2); } } }); } }
这里是错误
FATAL EXCEPTION: main 07-04 09:48:39.912: E/AndroidRuntime(694): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.a2zunitconverter.miniproject/com.a2zunitconverter.miniproject.lenght}: java.lang.RuntimeException: setOnItemClickListener cannot be used with a spinner. 07-04 09:48:39.912: E/AndroidRuntime(694): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647) 07-04 09:48:39.912: E/AndroidRuntime(694): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 07-04 09:48:39.912: E/AndroidRuntime(694): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 07-04 09:48:39.912: E/AndroidRuntime(694): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 07-04 09:48:39.912: E/AndroidRuntime(694): at android.os.Handler.dispatchMessage(Handler.java:99) 07-04 09:48:39.912: E/AndroidRuntime(694): at android.os.Looper.loop(Looper.java:123) 07-04 09:48:39.912: E/AndroidRuntime(694): at android.app.ActivityThread.main(ActivityThread.java:3683) 07-04 09:48:39.912: E/AndroidRuntime(694): at java.lang.reflect.Method.invokeNative(Native Method) 07-04 09:48:39.912: E/AndroidRuntime(694): at java.lang.reflect.Method.invoke(Method.java:507) 07-04 09:48:39.912: E/AndroidRuntime(694): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 07-04 09:48:39.912: E/AndroidRuntime(694): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 07-04 09:48:39.912: E/AndroidRuntime(694): at dalvik.system.NativeStart.main(Native Method) 07-04 09:48:39.912: E/AndroidRuntime(694): Caused by: java.lang.RuntimeException: setOnItemClickListener cannot be used with a spinner. 07-04 09:48:39.912: E/AndroidRuntime(694): at android.widget.Spinner.setOnItemClickListener(Spinner.java:102) 07-04 09:48:39.912: E/AndroidRuntime(694): at com.a2zunitconverter.miniproject.lenght.onCreate(lenght.java:31) 07-04 09:48:39.912: E/AndroidRuntime(694): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 07-04 09:48:39.912: E/AndroidRuntime(694): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 07-04 09:48:39.912: E/AndroidRuntime(694): ... 11 more
看到你的logcat的第一行:
java.lang.RuntimeException: setOnItemClickListener cannot be used with a spinner.
setOnItemClickListener
不能与Spinner
一起使用。 改用setOnItemSelectedListener
。
正如@亚历克斯说的很好,你必须使用
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView> parent, View view, int position, long id) { } @Override public void onNothingSelected(AdapterView> parent) { } });
或者如果你正在使用ButterKnife:
@OnItemSelected(R.id.spinner) public void onSpinnerItemSelected(int index){ // ... }
改变这一点
convertto.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView> arg, View v1, int index1, long arg4) { if ((quantity[index1]=="Meter") && (s1.equalsIgnoreCase("Meter"))) { Toast.makeText(v1.getContext(), " to meter",Toast.LENGTH_SHORT).show(); var2=var1; lresult.setText("" + var2); } } });
到onItemSelectedListener,
convertto.setOnItemSelectedListener(new OnItemSelectedListener() { public void onItemSelected(AdapterView> arg0, View arg1, int arg2, long arg3) { if ((quantity[index1]=="Meter") && (s1.equalsIgnoreCase("Meter"))) { Toast.makeText(v1.getContext(), " to meter",Toast.LENGTH_SHORT).show(); var2=var1; lresult.setText("" + var2); } } public void onNothingSelected(AdapterView> arg0) { // TODO Auto-generated method stub } });
它看起来像你不能在你的微调中使用itemClickListener,
这是解释它的错误行,
07-04 09:48:39.912: E/AndroidRuntime(694): Caused by: java.lang.RuntimeException: setOnItemClickListener cannot be used with a spinner.
科特林:
spinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { override fun onItemSelected(parent: AdapterView<*>, view: View, position: Int, id: Long) { print("onItemSelected position = $position id = $id") } override fun onNothingSelected(parent: AdapterView<*>) { } }
我写了它,因为从界面内联创建对象是不同的。
我希望它可以帮助别人。
- 无法解析Android Studio 3.0的依赖关系
- 如何在kotlin协议上指数退避重试
- 我在java代码中实现了一个在kotlin中定义的接口。 有’空’types不允许在这里
- 来自内部存储的Intent.ACTION_SEND PDF文件仅适用于某些应用程序
- 一个简单的kotlin类与mockito测试引起MissingMethodInvocationException
- 即使在androidTest包中,Kotlin类也会作为junit测试运行 – 对于Java类,它运行正常
- 简单的SSH连接与JSch
- Kotlin是否与Android上的ART 100%兼容?
- Android RxJava / Kotlin – 将大量数据映射到网络呼叫