从微调器获取项目时,应用程序崩溃 - android

when getting items from spinner the application crashes - android

我有一个带有 ButtonActivity,当我单击 Button 时,我得到一个带有 Spinner 和 3 个 EditText 的自定义对话框和一个确定按钮。 当我单击“确定”按钮时,我想从 3 EditText 和微调器中获取数据。但是当试图从微调器获取数据时,应用程序崩溃了

代码:

    dialogButtonOK.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                spinnerEvents = (Spinner) findViewById(R.id.spinnerForEvents);
                    String MakeYears = Years.getText() + " Years";
                    String MakeMonths = Months.getText() + " Months";
                    String MakeDays = Days.getText() + " Days";
                    String MakeDate = MakeYears + " " + MakeMonths + " " + MakeDays;

                    String MakeEventName = spinnerEvents.getSelectedItem().toString();

                 dialog.dismiss();
                }
            });

希望有人能帮忙 谢谢!!

例外情况是:

07-21 17:15:08.377  19898-19898/as.ga.myapp_v1 E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang.NullPointerException
            at as.ga.myapp_v1.Activity2.onClick(Activity2.java:167)
            at android.view.View.performClick(View.java:4102)
            at android.view.View$PerformClick.run(View.java:17085)
            at android.os.Handler.handleCallback(Handler.java:615)
            at android.os.Handler.dispatchMessage(Handler.java:92)
            at android.os.Looper.loop(Looper.java:155)
            at android.app.ActivityThread.main(ActivityThread.java:5454)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1029)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:796)
            at dalvik.system.NativeStart.main(Native Method)

而不是 findViewById(R.id.spinnerForEvents),尝试调用(你的对话框视图布局根视图).findViewById(R.id.spinnerForEvents).

在调用 toString() 方法之前检查您的 getSelecetdItem() 是否为空。

if(spinnerEvents != null && spinnerEvents.getSelectedItem() !=null ) {
   makeEventName = (String)spinnerEvents ();
} else  { 

}

或者试试这个。删除在 dialogButtonOK.setOnClickListener

中获取微调器值的逻辑
String makeEventName="";

spinnerEvents.setOnItemSelectedListener(new OnItemSelectedListener() {             
            @Override
            public void onItemSelected(AdapterView<?> adapter, View v,int position, long id) {
                // On selecting a spinner item
                makeEventName= adapter.getItemAtPosition(position).toString();
            }
            @Override
            public void onNothingSelected(AdapterView<?> arg0) {
            }
});