簡體   English   中英

在不導致 java.NullPointerException 的情況下獲取 Spinner 的選定項

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM