Sal*_*jad 86 java android android-spinner
请问这是我的代码,我正在粘贴下面的错误消息:我试图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
Ale*_*ood 204
查看logcat的第一行:
java.lang.RuntimeException: setOnItemClickListener cannot be used with a spinner.
setOnItemClickListener不能用于Spinner.请setOnItemSelectedListener改用.
vog*_*Dev 47
正如@Alex非常好地说,你必须使用
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){
    // ...
}
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<*>) {
    }
}
我写它是因为从接口内联创建对象是不同的。
希望对您有所帮助。
只需将您的实现形式更改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) {
        }
    });
科特林:
convertto.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
    override fun onItemSelected(parent: AdapterView<*>, view: View, position: Int, id: Long) {
    }
    override fun onNothingSelected(parent: AdapterView<*>) {
  }
}
改变这个
 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
    }
});
看来您无法在Spinner中使用itemClickListener,
这是解释它的错误行,
07-04 09:48:39.912: E/AndroidRuntime(694): Caused by: java.lang.RuntimeException: setOnItemClickListener cannot be used with a spinner.
解决了
 spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int  
 i, long l) {
        }
        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {
        }
    });
| 归档时间: | 
 | 
| 查看次数: | 53468 次 | 
| 最近记录: |