2012-09-16 28 views
5

Tôi muốn nhúng một DatePickerDialog bên trong chính hoạt động Android. Tôi không muốn DatePicker xuất hiện khi được nhấp vào nút dưới dạng hộp thoại nhưng tự nhúng vào bên trong hoạt động của mình. Tôi đã thử sử dụng chế độ xem DatePicker bên trong bố cục của mình, nhưng điều này có vẻ khác với DatePickerDialog.Nhúng datepicker trong một Hoạt động

Tôi đang sử dụng DialogFragment để tạo DatePickerDialog và sử dụng đoạn mã sau vào onCreate của MainAcitivity.java

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

public class DatePickerDialogFragment extends 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 

} 

}

Làm thế nào để đi về điều này?

+0

Hiện có rất nhiều bộ chọn ngày thành phần giao diện người dùng. Tại sao bạn không sử dụng một trong số này? –

Trả lời

1

Tôi đã DatePicker và DateTime trong bố cục hoạt động. Ý tưởng là để cho phép phiên bản của cả hai, soạn một giá trị thời gian ngày và trả lại nó một khi người dùng nhấp vào một nút thực hiện/thiết lập. Dưới đây, bạn có thể tìm thấy một số mã cho biết cách DatePicker được nhúng vào bố cục và mã hoạt động:

<?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()); 
      } 
    } 
} 
Các vấn đề liên quan