2015-04-05 89 views
0

我使用包含号码选取器的自定义布局创建对话框片段。自定义布局带号码选取器的对话框

为此,我创建了一个DialogFragment类,它实现NumberPicker.onValueChangeListener以及它将使用的布局xml文件。

我有在布局中的片段类变量相关联的号码选择器的问题,因为“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" /> 

我可以findViewById和之前可以把getActivity()运行该应用程序,但通过这样做会产生空对象引用错误。

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星。这是可能的吗?请回答。提前致谢。 – 2016-12-14 13:39:36

+0

@GanpatKaliya你的评论超出了本问答的范围。作为一个独立的问题,你将有更多的运气。 – stkent 2016-12-14 18:27:39