2012-07-04 60 views
60

Vui lòng Đây là mã của tôi bên dưới và tôi dán các thông báo lỗi bên dưới: Tôi đang cố sử dụng setOnItemClickListener trên trình quay tròn, có được phép không?Tôi gặp lỗi: setOnItemClickListener không thể sử dụng với trình quay số, điều gì là sai?

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

} 

} 

và đây là những lỗi

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 
+0

setOnItemClickListener không thể được sử dụng với trình quay số – VenomVendor

+0

Điều này xảy ra khi bạn sao chép listView.setOnItemClicklistener vào Spinner, Trình quay mất nó như bạn định làm điều gì đó với điều đó, lạ –

Trả lời

157

Xem dòng đầu tiên của logcat của bạn:

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

setOnItemClickListener không thể được sử dụng với một Spinner. Sử dụng setOnItemSelectedListener để thay thế.

+0

http://developer.android.com/guide/topics/ ui/controls/spinner.html # SelectListener – shkschneider

+0

cảm ơn tuyệt vời ~~~~ – Deepak

+0

công việc tốt .................. !!! –

3

Thay đổi này

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 

    } 
}); 

Dường như bạn không thể sử dụng itemClickListener trong Spinner của bạn,

Đây là dòng lỗi mà giải thích nó,

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

Như @ Alex rất tốt nói, bạn phải sử dụng

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

     } 

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

     } 
    }); 

Hoặc nếu bạn đang sử dụng ButterKnife:

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

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

    } 
} 

Tôi đã viết nó vì inline tạo đối tượng từ giao diện là khác nhau.

Tôi hy vọng nó sẽ giúp ai đó.

Các vấn đề liên quan