簡體   English   中英

帶數字選擇器的自定義布局對話框

[英]Custom layout Dialog with Number Picker

我正在創建一個具有自定義布局的對話框片段,其中包括一個數字選擇器。

為此,我創建了一個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" />

我可以將getActivity()放在findViewById之前,並可以運行該應用程序,但是這樣做會產生空對象引用錯誤。

PS:如果很重要,則按一下“主活動”即可調用對話框片段。

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);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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