Android Criminal实例--(5)对话框的使用及fragment的数据传递

fragment的数据传递还不是很懂……先把对话框记录一下

这里使用DialogFragment来封装AlertDialog,这样可以随时建立,不会销毁。

dialog 的xml文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <DatePicker
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/date_picker"
        android:calendarViewShown="false"
        />

</LinearLayout>
//显示的是老式日历
android:datePickerMode="spinner"

DatePickerFragment代码:

不是很懂。。下去还要继续学习

public class DatePickerFragment extends DialogFragment {

    public static final String ARG_DATE = "arg_date";
    private DatePicker mDatePicker;
    public static final String EXTRA_DATE="com.apple.DatePaickerFragment.date";

    @NonNull
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {

        Date date=(Date)getArguments().getSerializable(ARG_DATE);
        Calendar calendar=Calendar.getInstance();
        calendar.setTime(date);
        int year=calendar.get(Calendar.YEAR);
        int month=calendar.get(Calendar.MONTH);
        int day=calendar.get(Calendar.DAY_OF_MONTH);

        View mView=LayoutInflater.from(getActivity()).inflate(R.layout.dialog_date,null);

        mDatePicker=(DatePicker)mView.findViewById(R.id.date_picker);
        mDatePicker.init(year,month,day,null);

        return new AlertDialog.Builder(getActivity())
                .setView(mView)
                .setTitle(R.string.date_crime)
                .setPositiveButton("ok", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        int year=mDatePicker.getYear();
                        int day=mDatePicker.getDayOfMonth();
                        int month=mDatePicker.getMonth();
                        Date date=new GregorianCalendar(year,month,day).getTime();
                        sendRequest(Activity.RESULT_OK,date);
                    }
                })
                .create();
    }

    public static DatePickerFragment newInstance(Date date){
        Bundle args=new Bundle();
        args.putSerializable(ARG_DATE,date);

        DatePickerFragment fragment=new DatePickerFragment();
        fragment.setArguments(args);
        return fragment;
    }

    private void sendRequest(int resultCode,Date date){
        if(getTargetFragment()==null){
            return;
        }
        Intent intent=new Intent();
        intent.putExtra(EXTRA_DATE,date);
        getTargetFragment().onActivityResult(getTargetRequestCode(),resultCode,intent);
    }
}

修改后的button点击事件为:
这里写图片描述
这里写图片描述
数据传递但是没看到效果。。。不知道哪里有问题

猜你喜欢

转载自blog.csdn.net/ayangann915/article/details/81304320
今日推荐