从微调器获取项目时,应用程序崩溃 - android
when getting items from spinner the application crashes - android
我有一个带有 Button
的 Activity
,当我单击 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) {
}
});
我有一个带有 Button
的 Activity
,当我单击 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) {
}
});