第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從日期拾取器碎片中獲取標(biāo)記時出錯

從日期拾取器碎片中獲取標(biāo)記時出錯

萬千封印 2022-09-28 10:23:35
我正在創(chuàng)建一個具有兩個日期選擇器的應(yīng)用程序,以設(shè)置開始日期和結(jié)束日期。當(dāng)從對話框碎片中調(diào)用 DatePrper 時,我設(shè)置了兩個標(biāo)記來區(qū)分主活動中的結(jié)果: @Override    public void onClick(View v) {        switch (v.getId()) {            case R.id.sel_start_date:                DialogFragment startDatePicker = new DatePickerFragment();                startDatePicker.show(getSupportFragmentManager(), START_DATE_PICKER_TAG);                break;           case R.id.sel_end_date:                DialogFragment endDatePicker = new DatePickerFragment();                endDatePicker.show(getSupportFragmentManager(), END_DATE_PICKER_TAG);                break;日期拾取器碎片類:public class DatePickerFragment extends DialogFragment {    @NonNull    @Override    public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {        Calendar calendar = Calendar.getInstance();        int year = calendar.get(Calendar.YEAR);        int month = calendar.get(Calendar.MONTH);        int day = calendar.get(Calendar.DAY_OF_MONTH);        return new DatePickerDialog(getActivity(), (DatePickerDialog.OnDateSetListener) getActivity(), year, month, day );    }這就是我在主要活動中獲得結(jié)果的方式  @Override    public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {        if (view.getTag().equals(START_DATE_PICKER_TAG)) {            calendarStartDate.set(Calendar.YEAR, year);            calendarStartDate.set(Calendar.MONTH, month);            calendarStartDate.set(Calendar.DAY_OF_MONTH, dayOfMonth);            start_date_btn.setText(dayOfMonth + "/" + (month + 1) + "/" + year);        } else {            calendarEndDate.set(Calendar.YEAR, year);            calendarEndDate.set(Calendar.MONTH, month);            calendarEndDate.set(Calendar.DAY_OF_MONTH, dayOfMonth);            end_date_btn.setText(dayOfMonth + "/" + (month + 1) + "/" + year);        }    }但是,我得到了一個空點例外做視圖.getTag()。我該如何解決這個問題,或者我該如何區(qū)分結(jié)果?分類:日期拾取者對話是一個本機類,不是我創(chuàng)建的類,所以我無法編輯他們的方法
查看完整描述

3 回答

?
UYOU

TA貢獻(xiàn)1878條經(jīng)驗 獲得超4個贊

溶液:定義兩個接口以將數(shù)據(jù)從片段轉(zhuǎn)發(fā)到活動。


步驟 1.定義要在 和 之間進(jìn)行通信的接口。OnDateSetListenerMainActivityDatePickerFragment


public interface OnDateSetListener {

    void onDateSet(String tag, DatePicker view, int year, int month, int dayOfMonth);

}

步驟2.定義要在 和 之間進(jìn)行通信的接口。OnTimeSetListenerMainActivityTimePickerFragment


public interface OnTimeSetListener {

    void onTimeSet(String tag, TimePicker view, int hourOfDay, int minute);

}

第3步.讓我們實現(xiàn)這兩個接口。MainActivity


public class MainActivity extends AppCompatActivity implements OnDateSetListener, OnTimeSetListener {


    // Your code her

    ...


    @Override

    public void onDateSet(String tag, DatePicker view, int year, int month, int dayOfMonth) {

        // Process code with tag here

    }


    @Override

    public void onTimeSet(String tag, TimePicker view, int hourOfDay, int minute) {

        // Process code with tag here.

    }

}

步驟 4.更改代碼DatePickerFragment


public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {

    private static final String ARGUMENT_TAG = "ARGUMENT_TAG";


    public static DatePickerFragment newInstance(String tag) {

        Bundle args = new Bundle();

        args.putString(ARGUMENT_TAG, tag);

        DatePickerFragment fragment = new DatePickerFragment();

        fragment.setArguments(args);

        return fragment;

    }


    @NonNull

    @Override

    public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {

        Calendar calendar = Calendar.getInstance();

        int year = calendar.get(Calendar.YEAR);

        int month = calendar.get(Calendar.MONTH);

        int day = calendar.get(Calendar.DAY_OF_MONTH);

        return new DatePickerDialog(requireActivity(), this, year, month, day);

    }


    @Override

    public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {

        final String tag = getArguments().getString(ARGUMENT_TAG);

        OnDateSetListener listener = (OnDateSetListener) requireActivity();

        listener.onDateSet(tag, view, year, month, dayOfMonth);

    }

}

第5步.在 中更改代碼。TimePickerFragment


public class TimePickerFragment extends DialogFragment implements TimePickerDialog.OnTimeSetListener {

    private static final String ARGS_TAG = "ARGS_TAG";


    public static TimePickerFragment newInstance(String tag) {

        Bundle args = new Bundle();

        args.putString(ARGS_TAG, tag);

        TimePickerFragment fragment = new TimePickerFragment();

        fragment.setArguments(args);

        return fragment;

    }


    @Override

    public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {

        Calendar calendar = Calendar.getInstance();

        int hour = calendar.get(Calendar.HOUR_OF_DAY);

        int minute = calendar.get(Calendar.MINUTE);

        return new TimePickerDialog(requireActivity(), this, hour, minute, DateFormat.is24HourFormat(getActivity()));

    }



    @Override

    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {

        final String tag = getArguments().getString(ARGS_TAG);

        OnTimeSetListener listener = (OnTimeSetListener) requireActivity();

        listener.onTimeSet(tag, view, hourOfDay, minute);

    }

}


查看完整回答
反對 回復(fù) 2022-09-28
?
狐的傳說

TA貢獻(xiàn)1804條經(jīng)驗 獲得超3個贊

正如我所看到的,您已經(jīng)將標(biāo)記設(shè)置為片段,但您嘗試獲取的是視圖的標(biāo)記。它們不是一回事,因為視圖的標(biāo)記是對象,而片段的標(biāo)記是字符串。


查看完整回答
反對 回復(fù) 2022-09-28
?
富國滬深

TA貢獻(xiàn)1790條經(jīng)驗 獲得超9個贊

正如您在 onDateSet 中看到的視圖是一個日期選取器,并且您在包含日期選取器的片段上設(shè)置了標(biāo)記,即日期選取器對話框。


因此,要獲得標(biāo)簽,您應(yīng)該嘗試以下操作:


@Override

    public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {

        if (view.getParent() != null && view.getParent().getTag().equals(START_DATE_PICKER_TAG)) {

            calendarStartDate.set(Calendar.YEAR, year);

            calendarStartDate.set(Calendar.MONTH, month);

            calendarStartDate.set(Calendar.DAY_OF_MONTH, dayOfMonth);

            start_date_btn.setText(dayOfMonth + "/" + (month + 1) + "/" + year);

        } else {

            calendarEndDate.set(Calendar.YEAR, year);

            calendarEndDate.set(Calendar.MONTH, month);

            calendarEndDate.set(Calendar.DAY_OF_MONTH, dayOfMonth);

            end_date_btn.setText(dayOfMonth + "/" + (month + 1) + "/" + year);

        }

    }


查看完整回答
反對 回復(fù) 2022-09-28
  • 3 回答
  • 0 關(guān)注
  • 145 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號