wake-up-neo.com

Ich habe einen Fehler: setOnItemClickListener kann nicht mit einem Drehfeld verwendet werden. Was ist falsch?

Dies ist mein Code unten und ich füge die folgenden Fehlermeldungen ein: Ich versuche, setOnItemClickListener auf dem Spinner zu verwenden, ist das zulässig?

@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);
        }
    }      
});

}

}

und hier sind die fehler

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
78
Salman Amjad

Sehen Sie sich die erste Zeile Ihres Logkats an:

Java.lang.RuntimeException: setOnItemClickListener cannot be used with a spinner.

setOnItemClickListener kann nicht mit einem Spinner verwendet werden. Verwenden Sie stattdessen setOnItemSelectedListener.

196
Alex Lockwood

Wie @Alex sehr gut sagte, muss man verwenden

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    });

Oder wenn Sie ButterKnife verwenden:

@OnItemSelected(R.id.spinner)
public void onSpinnerItemSelected(int index){
    // ...
}
44
voghDev

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<*>) {

    }
}

Ich habe es geschrieben, weil das Erstellen von Inline-Objekten über die Schnittstelle anders ist.

Ich hoffe es hilft jemandem.

7
MBH

Ändere das

 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);
        }

    }

   });

zu 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

    }
});

Es sieht so aus, als ob Sie onitemClickListener nicht in Ihrem Spinner verwenden können.

Hier ist die Fehlerzeile, die es erklärt,

07-04 09:48:39.912: E/AndroidRuntime(694): Caused by: Java.lang.RuntimeException: setOnItemClickListener cannot be used with a spinner.
4
Andro Selva