我正在创建一个应用程序,其中有一个下拉菜单(微调器),它显示用户选项,并根据用户输入在活动之间切换。我无法理解问题所在。
这是我的代码
public class Main_Calculator extends Activity {
Spinner menu;
EditText insert;
TextView display;
Intent f1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_calculator);
display=(TextView)findViewById(R.id.display);
insert =(EditText)findViewById(R.id.insert);
menu = (Spinner)findViewById(R.id.menu);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.menu, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
menu.setAdapter(adapter);
menu.setSelection(0);
menu.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
switch (i)
{
case 2:
f1 = new Intent(Main_Calculator.this,Unit_Converter.class );
startActivity(f1);
break;
}
}
public void onNothingSelected(AdapterView<?> parent) {
// Another interface callback
}
});
}
}
这是我的错误
06-16 00:11:45.309 10726-10726/com.sams.ultimateallpurpose.calculator E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.sams.ultimateallpurpose.calculator, PID: 10726
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.sams.ultimateallpurpose.calculator/com.sams.ultimateallpurpose.calculator.Main_Calculator}: java.lang.RuntimeException: setOnItemClickListener cannot be used with a spinner.
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.RuntimeException: setOnItemClickListener cannot be used with a spinner.
at android.widget.Spinner.setOnItemClickListener(Spinner.java:461)
at com.sams.ultimateallpurpose.calculator.Main_Calculator.onCreate(Main_Calculator.java:64)
at android.app.Activity.performCreate(Activity.java:5231)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
答案 0 :(得分:4)
例外是直截了当的:你不能使用带有微调器的点击监听器。源代码Spinner.java
:
/**
* <p>A spinner does not support item click events. Calling this method
* will raise an exception.</p>
* <p>Instead use {@link AdapterView#setOnItemSelectedListener}.
*
* @param l this listener will be ignored
*/
@Override
public void setOnItemClickListener(OnItemClickListener l) {
throw new RuntimeException("setOnItemClickListener cannot be used with a spinner.");
}
是的,doc建议改用setOnItemSelectedListener
方法。