简体   繁体   English

我有一个错误:setOnItemClickListener 不能与微调器一起使用,这是怎么回事?

[英]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){
    // ...
}

Kotlin:科特林:

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.

相关问题 CSS解析文件JavaFX时出错,但是我不知道它错了什么 - CSS Error parsing file JavaFX but i have no clue what it wrong 在 Java 中出错,不知道我做错了什么 - Getting error in Java, Have no idea what I'm doing wrong 错误“小时数无法解析为变量”,我在做什么错? - Error “hours cannot be resolved to a variable”, what am I doing wrong? 在解析器中编译错误,认为我的输入文件有错误,但是不确定发生了什么错误 - Compile error in my parser, think I have my input file wrong, but unsure what did wrong 我不知道该如何处理错误int无法取消引用。 - I have no idea what to do with the error int cannot be dereferenced. 使用Eclipse进行Java获取无法解决扫描程序。 有人知道我做错了吗? - Using Eclipse for java getting cannot be resolved for scanner. Anyone know what I have done wrong? 我有一个Android微调器或阵列适配器错误,但不确定 - I Have a Android spinner or array adapter error but I'm not sure 怎么了 我收到java.lang.ClassCastException错误,但看不到哪里出错了 - What is wrong here? I get a java.lang.ClassCastException error but I can't see where I have gone wrong 当我输入一个整数时,我有一个随机发生的错误,有人知道出了什么问题吗? - I have an error that randomly happens when I input an int, does anybody know what's wrong? 我在 Android 代码中做错了什么? - What have I done wrong in the Android code?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM