2012-01-06 4 views
1

Я хочу показать пользовательский диалог с помощью счетчика. Но когда я делаю, я получаю NullPointerException в методе setAdapter(). Я пробовал уже более недели и не мог понять, как правильно это сделать. вот мой код:Spinner in Dialog - NullPointerException - Android

 AlertDialog alertDialog; 

    LayoutInflater inflater = 
       (LayoutInflater) this.getSystemService(LAYOUT_INFLATER_SERVICE);       
    View layout = inflater.inflate(R.layout.form, 
            (ViewGroup) findViewById(R.id.layout_root)); 

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

    //I get the error in the following line: 

    try{ 

     spinner.setAdapter(spinnerAdapter); 

    }catch(Exception exception){ 
     Toast.makeText(getApplicationContext(), 
    "Exception: "+exception,Toast.LENGTH_SHORT).show(); 
     } 

    AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setView(layout); 
    alertDialog = builder.create(); 
    alertDialog.setTitle("Security"); 
    alertDialog.show(); 
    } 

Вот XML-файл form.xml:

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


    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" 
    android:id="@+id/layout_root" > 


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

    </LinearLayout> 

Пожалуйста, помогите мне. Я перешел по ссылке: Spinner in dialog - NullPointerException , которая обсуждает ту же проблему, но я все равно не смог ее сделать.

+0

Вам нужно добавить Spinner View динамически/программно в своем классе активности кода, и установить контекст этой вашей деятельности. – jeet

ответ

2

Попробуйте это:

Spinner spinner = (Spinner)layout.findViewById(R.id.spinner1);

+0

Это просто решает проблему! Большое вам спасибо :) –

+0

@vickey: Небольшое предложение для вас, сначала зайдите на ваш вопрос, прежде чем отправлять какие-либо вопросы. Это сэкономит ваше много времени. –

+0

получение ошибки: метод findViewById (int) не определен для типа R.layout – Neo

2

Spinner spinner = (Spinner) findViewById(R.id.spinner1); Вы не можете сделать это здесь. Вам нужно использовать layout.findviewById(...).. (надеюсь, у вашего макета есть прядильщик).

+1

спас мой день через 3 года = D, спасибо !!! – user2582318

+1

@ user2582318: Рад, что это помогло! Удачи! – kosa

 Смежные вопросы

  • Нет связанных вопросов^_^