使用微调器在活动之间切换

时间:2014-06-15 19:09:19

标签: android android-spinner

我正在创建一个应用程序,其中有一个下拉菜单(微调器),它显示用户选项,并根据用户输入在活动之间切换。我无法理解问题所在。

这是我的代码

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)

1 个答案:

答案 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方法。