আমার একটি ত্রুটি রয়েছে: একটি স্পিনার দিয়ে setOnItemClickListener ব্যবহার করা যাবে না, কী ভুল?


103

দয়া করে এটি নীচে আমার কোড এবং আমি নীচে ত্রুটি বার্তাগুলি আটকে দিচ্ছি: আমি 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

সেটঅনটাইমক্লিকলিস্টার কোনও স্পিনারের সাথে ব্যবহার করা যাবে না
ভেনমভেন্ডর

আপনি স্পিনারের তালিকায় ভিউ.সেটঅনটাইমক্লিক্লিস্টনার অনুলিপি করার পরে এটি ঘটে, স্পিনার তার সাথে কিছু করার
ইচ্ছে

উত্তর:


225

আপনার লগকটের প্রথম লাইনটি দেখুন:

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

setOnItemClickListenerক ব্যবহার করা যাবে না SpinnersetOnItemSelectedListenerপরিবর্তে ব্যবহার করুন।



1
@ আলেক্স আমি বুঝতে পেরেছি। তবে অ্যান্ড্রয়েড স্টুডিওতে অটো সম্পূর্ণরূপে সেটঅনটাইমক্লিকলিস্টনার বিকল্পটি কেন দেখানো হয়েছিল, এটি কি স্বাভাবিক আচরণ, বাগ বা অন্য কিছু।
আচ্ছাদন

3
কেন? এটি ডকুমেন্টটিওন ডেভেলপারে
ত্রুটি

3
আমাদের যদি আবার কোনও আইটেম নির্বাচন করার দরকার হয়? এই পদ্ধতিটি একই নির্বাচনের জন্য কাজ করবে না।
ইফতেখারী

53

@ অ্যালেক্স যেমন খুব ভাল বলেছেন, আপনার ব্যবহার করতে হবে

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

        }

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

        }
    });

বা আপনি যদি বাটারনিফ ব্যবহার করছেন:

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

17

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

    }
}

আমি এটি লিখেছিলাম কারণ ইন্টারফেস থেকে ইনলাইন তৈরির বিষয়টি আলাদা।


5

এই পরিবর্তন

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

    }

   });

আইটেমসিলিটেডলিস্টনার,

 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

    }
});

দেখে মনে হচ্ছে আপনি আপনার স্পিনারে আইটেম ক্লিকলিস্টার ব্যবহার করতে পারবেন না,

এখানে ত্রুটি রেখাটি এটি ব্যাখ্যা করে যা,

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

5

খালি আপনার বাস্তবায়ন ফর্ম পরিবর্তন setOnItemClickListenerকরতে setOnItemSelectedListener। আপনার কোডটি ত্রুটি ছাড়াই পরে ঠিক কাজ করা উচিত।

জাভা:

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

  }
}

1

দ্বারা সমাধান

 spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int  
 i, long l) {

        }

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

        }
    });
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.