Spinner в диалоге - NullPointerException - PullRequest
4 голосов
/ 16 июня 2011

Я хочу показать пользовательское диалоговое окно со счетчиком.Как ни странно, я получаю исключение NullPointerException при попытке установить адаптер счетчика ...

Dialog dialog = new Dialog(this.getApplicationContext());
dialog.setContentView(R.layout.dialog_spinner);

ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, new String[] {"0","1","2"});

spin = (Spinner)dialog.findViewById(R.id.spinQ);
//What am I doing wrong here?
spin.setAdapter(spinnerAdapter);

dialog.setTitle("Questions");
dialog.show();

Код макета XML:

<?xml version="1.0" encoding="utf-8"?>  

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:paddingLeft="10dip"
>

<Spinner 
android:id="@+id/spinQ" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content"
/> 


</LinearLayout>

ОБНОВЛЕНИЕ:

        AlertDialog alertDialog;


        LayoutInflater inflater = (LayoutInflater) getApplicationContext().getSystemService(LAYOUT_INFLATER_SERVICE);
        View layout = inflater.inflate(R.layout.dialog_spinner,
                                       (ViewGroup) findViewById(R.id.root));

        ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<String>(this,
              android.R.layout.simple_spinner_item, new String[] {"0","1","2"});
        spin = (Spinner) findViewById(R.id.spinQ);
        //I get the error in the following line:
        spin.setAdapter(spinnerAdapter);

        builder = new AlertDialog.Builder(mContext);
        builder.setView(layout);
        alertDialog = builder.create();
        alertDialog.show();

1 Ответ

10 голосов
/ 16 июня 2011

Ваш Spinner, вероятно, еще не раздут.Если вы хотите манипулировать представлениями, надуйте его сами, а затем используйте setContentView на надутом View.См. документы о создании диалогов.

Обновление:

В своем новом коде измените:

spin = (Spinner) findViewById(R.id.spinQ);

на:

spin = (Spinner) layout.findViewById(R.id.spinQ);
...