[英]I have an error: setOnItemClickListener cannot be used with a spinner, what is wrong?
Kindly This is my code below, and I am pasting the error messages underneath: I am trying to use setOnItemClickListener
on the spinner, is it permissible?请在下面这是我的代码,我将错误消息粘贴在下面:我正在尝试在微调器上使用
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);
}
}
});
}
}
and here are the errors这是错误
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
See the first line of your logcat:查看 logcat 的第一行:
java.lang.RuntimeException: setOnItemClickListener cannot be used with a spinner.
setOnItemClickListener
cannot be used with a Spinner
. setOnItemClickListener
不能与Spinner
一起使用。 Use setOnItemSelectedListener
instead.请改用
setOnItemSelectedListener
。
As @Alex very well said, you have to use正如@Alex 所说的那样,你必须使用
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
Or if you are using ButterKnife:或者,如果您使用的是 ButterKnife:
@OnItemSelected(R.id.spinner)
public void onSpinnerItemSelected(int index){
// ...
}
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<*>) {
}
}
I wrote it because inline creating object from the interface is different.我写它是因为从界面内联创建对象是不同的。
Simply change your implementation form setOnItemClickListener
to setOnItemSelectedListener
.只需将您的实施形式
setOnItemClickListener
更改为setOnItemSelectedListener
。 Your code should work fine afterwards without error.您的代码之后应该可以正常工作而不会出错。
Java:爪哇:
convertto.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
Kotlin:科特林:
convertto.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
override fun onItemSelected(parent: AdapterView<*>, view: View, position: Int, id: Long) {
}
override fun onNothingSelected(parent: AdapterView<*>) {
}
}
Change this改变这个
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);
}
}
});
to onItemSelectedListener,到 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
}
});
It looks like you cannot use itemClickListener in your Spinner,看起来您不能在 Spinner 中使用 itemClickListener,
Here is the error line which explains it,这是解释它的错误行,
07-04 09:48:39.912: E/AndroidRuntime(694): Caused by: java.lang.RuntimeException: setOnItemClickListener cannot be used with a spinner.
Solved by解决者
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int
i, long l) {
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.