[英]Getting a Spinner's selected item without causing a java.NullPointerException
我正在嘗試制作一個彈出的 AlertDialog 並在其中有一個 Spinner,有人可以在其中選擇一個項目,並將該項目保存到一個變量中。 但是,當我對其進行測試並單擊“確定”按鈕時,應用程序將停止,並且在 logcat 上出現java.NullPointerException
。 顯然,Spinner 的getSelectedItem()
(應該獲取所選項目)導致了這個java.NullPointerException
。
導致 NullPointerException 的代碼:
alertDialogBuilder.setView(promptsView);
alertDialogBuilder
.setCancelable(false)
.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int id) {
final Spinner spinner = (Spinner) findViewById(R.id.LanguagePicker);
/*(error is here) -->*/ text = spinner.getSelectedItem().toString();
spinner.setAdapter(adapter);
String r = textInput.getText().toString();
allTheTranslatedText = getTranslatedText(r);
textOutput.setText(allTheTranslatedText);
}
})
.setNegativeButton("Cancel",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
}
});
是否有另一種方法可以使用檢索 Spinner 的選定項目而不會導致 NullPointerException?
這樣做。
你缺少 promptsView.findViewById();
final Spinner spinner = (Spinner) promptsView.findViewById(R.id.LanguagePicker);
View promptsView = LayoutInflator.inflator(......//do it);
alertDialogBuilder.setView(promptsView);
alertDialogBuilder
.setCancelable(false)
.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int id) {
//this is the main line
final Spinner spinner = (Spinner) promptsView.findViewById(R.id.LanguagePicker);
/*(error is here) -->*/ text = spinner.getSelectedItem().toString();
spinner.setAdapter(adapter);
String r = textInput.getText().toString();
allTheTranslatedText = getTranslatedText(r);
textOutput.setText(allTheTranslatedText);
}
})
.setNegativeButton("Cancel",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.