Android 在活动中嵌入日期选择器

Android 在活动中嵌入日期选择器,android,android-activity,dialog,datepicker,Android,Android Activity,Dialog,Datepicker,我想在Android活动本身中嵌入一个DatePickerDialog。我不希望当单击按钮时,DatePicker作为对话框出现,而是将其嵌入到我的活动中。我曾尝试在布局中使用DatePicker视图,但这似乎与DatePickerDialog不同 我正在使用DialogFragment创建DatePickerDialog,并在mainacivity.java的onCreate中使用以下代码 FragmentTransaction ft = getFragmentManager().be

我想在Android活动本身中嵌入一个
DatePickerDialog
。我不希望当单击按钮时,
DatePicker
作为对话框出现,而是将其嵌入到我的活动中。我曾尝试在布局中使用
DatePicker
视图,但这似乎与
DatePickerDialog
不同

我正在使用
DialogFragment
创建
DatePickerDialog
,并在
mainacivity.java的
onCreate
中使用以下代码

    FragmentTransaction ft = getFragmentManager().beginTransaction();
    DatePickerDialogFragment datePickerDialogFragment = DatePickerDialogFragment.newInstance();

    ft.add(R.id.main_screen_layout, datePickerDialogFragment); // main_screen_layout is given as the id for the layout related to MainActivity
    ft.commit();
//DatePickerDialogFragment.java

公共类DatePickerDialogFragment扩展DialogFragment

implements DatePickerDialog.OnDateSetListener {

public static DatePickerDialogFragment newInstance() {
    return new DatePickerDialogFragment();
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.dialog_datepicker, container, false);
    View tv = v.findViewById(R.id.tv);

    ((TextView)tv).setText("This is a new instance");

    return v;
}

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    Calendar c = Calendar.getInstance();
    return new DatePickerDialog(getActivity(), this, 
            c.get(Calendar.YEAR),
            c.get(Calendar.MONTH),
            c.get(Calendar.DAY_OF_MONTH));
}

public void onDateSet(DatePicker view, int year, int monthOfYear,
        int dayOfMonth) {
    // TODO Auto-generated method stub

}
}


如何进行此操作?

我已经在活动布局中设置了DatePicker和DateTime。这样做的目的是允许编辑这两者,编写一个日期时间值,并在用户单击“完成/设置”按钮时返回该值。 在下面,您可以找到一些代码,显示如何将日期选择器嵌入布局和活动代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:orientation="vertical">

    <DatePicker
        android:id="@+id/date_value"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:calendarViewShown="false" />
</LinearLayout>


public class DateSelectionActivity extends Activity {

    private DatePicker datePicker;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // ...

        this.datePicker = (DatePicker) this.findViewById(R.id.date_value);
        this.datePicker.init(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), null);

        // ...
    }

    private OnClickListener confirmButtonClickListener = new OnClickListener() {

            @Override
            public void onClick(View v) {

                // Get user selection
                // DateSelectionActivity.this.datePicker.getYear());
                // DateSelectionActivity.this.datePicker.getMonth());
                // DateSelectionActivity.this.datePicker.getDayOfMonth());
            }
    }
}

公共类DateSelectionActivity扩展活动{
私人日期选择器日期选择器;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
// ...
this.datePicker=(datePicker)this.findViewById(R.id.date\u值);
this.datePicker.init(calendar.get(calendar.YEAR)、calendar.get(calendar.MONTH)、calendar.get(calendar.DAY\u OF\u MONTH),null);
// ...
}
私有OnClickListener confirButtonClickListener=新OnClickListener(){
@凌驾
公共void onClick(视图v){
//获取用户选择
//DateSelectionActivity.this.datePicker.getYear());
//DateSelectionActivity.this.datePicker.getMonth();
//DateSelectionActivity.this.datePicker.getDayOfMonth());
}
}
}

有很多日期选择器UI组件。为什么不使用其中一个?