2015-04-05 3 views
0

Я создаю фрагмент диалога с настраиваемым макетом, который включает в себя набор символов.Пользовательский макет Диалог с номером Picker

Для этого я создал класс DialogFragment, который реализует NumberPicker.onValueChangeListener и XML-файл макета, который он будет использовать.

У меня возникли проблемы, связывающую номер Picker в макете с переменной в классе фрагмента, потому что «» findViewById «Метод не может быть решена»

Как я могу обойти эту проблему?

Элементы кода ниже:

Диалог Фрагмент:

public class PlayersDialogueFragment extends DialogFragment implements NumberPicker.OnValueChangeListener { 

NumberPicker numberOfPlayersPicker = null; 

@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 
    // Use the Builder class for convenient dialog construction 
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
    LayoutInflater inflater = getActivity().getLayoutInflater(); 
    builder.setView(inflater.inflate(R.layout.players_fragment_layout, null)); 

    numberOfPlayersPicker = (NumberPicker) findViewById(R.id.numberOfPlayersPicker); 
    numberOfPlayersPicker.setMaxValue(4); 
    numberOfPlayersPicker.setMinValue(2); 

Компоновка - "players_fragment_layout":

<NumberPicker 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/numberOfPlayersPicker" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" /> 

Я могу поставить getActivity() перед findViewById и может запустите приложение, но он дает ошибку ссылки на нулевой объект, делая это.

PS: Если это имеет значение, фрагмент диалога вызывается основной активностью при нажатии кнопки.

ответ

1

Присвоить inflater.inflate(R.layout.players_fragment_layout, null) к переменной v, а затем вызвать v.findViewById так:

public class PlayersDialogueFragment extends DialogFragment implements NumberPicker.OnValueChangeListener { 

    NumberPicker numberOfPlayersPicker = null; 

    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     // Use the Builder class for convenient dialog construction 
     AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
     LayoutInflater inflater = getActivity().getLayoutInflater(); 
     View v = inflater.inflate(R.layout.players_fragment_layout, null); 
     builder.setView(v); 

     numberOfPlayersPicker = (NumberPicker) v.findViewById(R.id.numberOfPlayersPicker); 
     numberOfPlayersPicker.setMaxValue(4); 
     numberOfPlayersPicker.setMinValue(2); 
    } 
} 
+0

мы можем установить изображение в номер сборщика, как первый ряд с 5 звезд, а затем 4 звезды, ..., 1 звезда. это возможно? ответьте, пожалуйста. заранее спасибо. –

+0

@GanpatKaliya Ваш комментарий выходит за рамки этого Q & A. У вас будет больше удачи, разместив его как отдельный вопрос. – stkent

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