Tôi muốn biết có cách nào để tạo datePicker trong một đoạn không? Tôi đang tạo một hoạt động thường xuyên có thể và nó mang lại cho tôi lỗi cú pháp. cách chính xác để làm điều này là gì?Làm thế nào để tạo các hộp thoại datePicker và timePicker trong lớp phân đoạn?
Trả lời
Bạn rất có thể sẽ cần sử dụng DialogFragment. Tôi tìm thấy một số thông tin ở đây:
và cũng là một trợ giúp lớn ở đây:
Điều này sẽ giúp bạn nhận được trên con đường của bạn, tôi đang làm điều này rất bây giờ. Mặc dù bên trong mã ví dụ tôi không sử dụng một người thợ xây và thay vào đó chỉ cần trả lại:
return new DatePickerDialog(getActivity(), mDateSetListener, mYear, mMonth, mDay);
Điều này dường như làm việc ... mặc dù tôi không thể tìm ra được nêu ra như thế nào để cập nhật các văn bản trên đoạn mà các cuộc gọi DialogFragment này. Tôi nghĩ điều này sẽ làm việc và nó không:
public void updateDisplay()
{
//update our button text from the calling fragment, this isn't quite working
//doesn't crash just doesn't update...must be missing something.
View v=getActivity()
.getLayoutInflater()
.inflate(R.layout.session_edits, null);
Button sessionDate = (Button)v.findViewById(R.id.sessionPickDate);
sessionDate.setText(new StringBuilder()
.append(mMonth+1).append("-").append(mDay).append("-").append(mYear).append(" "));
}
Mở rộng trên Codejoy của câu trả lời:
Đây là lớp DatePickerDialogFragment tôi:
public class DatePickerDialogFragment extends DialogFragment {
private Fragment mFragment;
public DatePickerDialogFragment(Fragment callback) {
mFragment = callback;
}
public Dialog onCreateDialog(Bundle savedInstanceState) {
return new DatePickerDialog(getActivity(), (OnDateSetListener) mFragment, 1980, 7, 16);
}
}
(Chú ý rằng các nhà xây dựng chấp nhận đoạn đó là sử dụng hộp thoại này - và chúng tôi sử dụng tham chiếu này cho trường nghe gọi lại cho DatePickerDialog)
Đoạn của tôi sau đó chỉ thực hiện trênDateSetListener:
public class SignupFragment extends Fragment implements OnDateSetListener {
...
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
// do stuff with the date the user selected
}
}
... và sau đó tôi hiển thị hộp thoại từ Fragment tôi như vậy:
FragmentTransaction ft = getFragmentManager().beginTransaction();
DialogFragment newFragment = new DatePickerDialogFragment(this);
newFragment.show(ft, "dialog");
Không chắc nếu điều này là cách tốt nhất để làm điều đó, nhưng dường như làm việc tốt.
Anwsers trước đây giải thích đủ tốt nhưng đây là cách tôi đã thay đổi chế độ xem trênDateSet của DialogFragment.
Bạn có thể chuyển chế độ xem bạn muốn thay đổi thành cấu trúc của lớp mở rộng DialogFragment. Sau đó gọi phương thức setText method onDateSet của lớp. Đây là mã:
public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {
public EditText activity_edittext;
public DatePickerFragment(EditText edit_text) {
activity_edittext = edit_text;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current date as the default date in the picker
final Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
// Create a new instance of DatePickerDialog and return it
return new DatePickerDialog(getActivity(), this, year, month, day);
}
@Override
public void onDateSet(DatePicker view, int year, int month, int day) {
activity_edittext.setText(String.valueOf(month + 1) + "/" + String.valueOf(day) + "/" + String.valueOf(year));
}
}
Sau đó, bạn có thể hiển thị đoạn của bạn như thế này:
public void showDatePickerDialog(View v) {
new DatePickerFragment((EditText) v).show(getSupportFragmentManager(), "datePicker");
}
Đặt phương pháp này onClick phương pháp EditText bạn muốn thay đổi.Như thế này:
<EditText
android:id="@+id/editTextToShowDate"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:ems="10"
android:focusable="false"
android:inputType="date"
android:onClick="showDatePickerDialog" >
</EditText>
hoạt động. !! cảm ơn u –
Mặc dù câu trả lời ở trên có thể làm việc, tôi tin rằng tôi có một giải pháp dễ dàng hơn nhiều:
DatePickerDialog dialog = new DatePickerDialog(getActivity(), datePickerListener,
2000, 1,1);
dialog.show();
đâu datePickerListerener là một cái gì đó như thế này:
private DatePickerDialog.OnDateSetListener datePickerListener
= new DatePickerDialog.OnDateSetListener() {
// when dialog box is closed, below method will be called.
public void onDateSet(DatePicker view, int selectedYear,
int selectedMonth, int selectedDay) {
//Do whatever you want
}
};
Dưới đây là một đoạn muốn sử dụng datepicker trong một đoạn:
private Callbacks mCallbacks;
private String tag;
/**
* A callback interface that all fragments/activities containing this fragment must
* implement. This mechanism allows activities to be notified of item
* selections.
*/
public interface Callbacks {
/**
* Callback for when an item has been selected.
*/
public void onSelected(Date date, String tag);
}
public static DatePickerFragment newInstance(Fragment fragment,
Date date, String tag) {
DatePickerFragment dateFragment = new DatePickerFragment();
Calendar c = Calendar.getInstance();
if (date != null) {
c.setTime(date);
}
dateFragment.setYear(c.get(Calendar.YEAR));
dateFragment.setMonth(c.get(Calendar.MONTH));
dateFragment.setDay(c.get(Calendar.DAY_OF_MONTH));
dateFragment.setmCallbacks((Callbacks) fragment);
dateFragment.setTag(tag);
return dateFragment;
}
public void onDateSet(DatePicker view, int year, int month, int day) {
// Do something with the date chosen by the user
Calendar cal = Calendar.getInstance();
cal.set(year, month, day);
date = new Date(cal.getTime().getTime());
setType(1);
mCallbacks.onSelected(date,tag);
}
và trong đoạn của bạn:
public class DetailFragment extends Fragment implements
DatePickerFragment.Callbacks {
. . .
private void startDatePicker(String tag) {
DialogFragment newFragment = DatePickerFragment.newInstance(this,
invoiceModell.getInvoice().getInvoiceDate(), tag);
newFragment.show(getActivity().getSupportFragmentManager(),
"datePicker");
}
@Override
public void onSelected(Date date, String tag) {
if (tag.equals(FIRSTDATE))
invoiceModell.getInvoice().setInvoiceDate(date);
else if (tag.equals(SECONDDATE))
invoiceModell.getInvoice().setDueDate(date);
}
- 1. Làm cách nào để thay đổi màu mặc định của hộp thoại DatePicker và TimePicker trong Android?
- 2. jquery datepicker trong một hộp thoại
- 3. Sự cố với Hộp thoại jQuery và các plugin Datepicker
- 4. Khi tạo một hộp thoại với jquery, làm thế nào để ẩn div hộp thoại?
- 5. Làm cách nào để tạo Hộp thoại tùy chỉnh 100%
- 6. Thêm đoạn vào hộp thoại
- 7. Hộp thoại phân đoạn không có vấn đề Tiêu đề
- 8. Hộp thoại jQueryUI/Datepicker Auto-Opens
- 9. Android: sử dụng một datepicker và timepicker từ trong một Dialog
- 10. Làm cách nào để tạo hộp thoại Popup trong Silverlight?
- 11. Làm cách nào để thêm datepicker vào hộp thoại thêm hàng trong jqGrid?
- 12. Bạn sử dụng giao diện Datepicker và Timepicker tùy chỉnh như thế nào?
- 13. làm thế nào để có được id để hộp thoại
- 14. Làm thế nào để tạo và nhận được giá trị trả về từ hộp thoại Cocoa?
- 15. Cách tạo hộp thoại JavaFX?
- 16. Phân đoạn hộp thoại với và EditText hiển thị bàn phím tự động sau khi tải
- 17. Tạo các hộp thoại PrimeFaces động
- 18. đặt tiêu đề phân đoạn hộp thoại để hiển thị từ bên phải
- 19. Làm thế nào để ngăn chặn đóng hộp thoại MFC trên các phím Enter và Escape?
- 20. Làm thế nào để tạo ra hộp thoại sẽ được đầy đủ trong chiều ngang
- 21. Làm thế nào để tạo các đối tượng lớp động?
- 22. Tôi làm cách nào để tạo hộp thoại tùy chỉnh với hai bộ đếm ngày?
- 23. Làm cách nào để tạo các nút điều khiển như hộp thoại trong Ember?
- 24. Làm thế nào để thêm vào các phân lớp
- 25. jQuery Datepicker và Timepicker cho cùng một trường nhập để bật lên một cái khác
- 26. Tạo hộp thoại tùy chỉnh trong Android
- 27. Làm thế nào để tạo đoạn trích ngắn trong Vim?
- 28. Làm thế nào để tạo cửa sổ bật lên/hộp thoại trong iOS trong một ViewController riêng biệt?
- 29. Làm thế nào để mở một hộp thoại trong điện thoại di động jquery alpha 4?
- 30. Làm thế nào để bỏ qua hộp thoại in trong printDocument.print() và in trang trực tiếp?
Bạn sử dụng "vị trí" ở đâu? –
Tôi có một văn bản cần có ngày tháng. Tôi đã đặt onClicklistener từ văn bản này để mở đoạn này theo cách bạn đã làm, và nó đang hoạt động. Vấn đề là bàn phím cũng mở ra. Làm thế nào tôi có thể giải quyết điều đó? Cảm ơn bạn –
@PauloBarros "prev" là xóa mọi đoạn trước trên màn hình bằng thẻ này (chẳng hạn như một hộp thoại khác), nhưng không được sử dụng trong ví dụ này. Tôi đã cập nhật mã để không có nó. – NPike