Sınıfım böyle DialogFragment
uzanır sağlamalıdır:Hata: Bu fragman bir varsayılan kurucu (bağımsız değişkenler ile halka açık bir yapıcı)
public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {
EditText editDate;
private Calendar dateTime = Calendar.getInstance();
private SimpleDateFormat dateFormatter = new SimpleDateFormat("dd MMMM yyyy");
public DatePickerFragment(EditText editText) {
editDate = editText;
}
@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 monthOfYear, int dayOfMonth) {
dateTime.set(year, monthOfYear, dayOfMonth);
editDate.setText(dateFormatter
.format(dateTime.getTime()));
}
}
Ve Aktivite bunu kullanıyorum nasıl şudur:
public void showDatePickerDialog(View v) {
new DatePickerFragment((EditText) v).show(getSupportFragmentManager(), "datePicker");
}
Ve böyle çağıran:
<EditText
android:id="@+id/editDate"
android:onClick="showDatePickerDialog" />
Ama her zaman alıyorum:
Error: This fragment should provide a default constructor (a public constructor with no arguments)
Android Parçası hep hayır arg yapıcı bir varsayılan olmalıdır yardımcı olur umarım
uzanır ekle .Gerçekten bunu göz ardı etmek istiyorsanız, IDE'nizde tiftik uyarılarını devre dışı bırakabilirsiniz. EditText'i neden geçtiğinizi anlatabilirseniz, ihtiyaçlarınızı karşılamanın birden fazla yolu olabilir. – Milan
Fragmanımdan birinde Tarih Seçicisini göstermek için EditText kullanıyorum ... @Milanix – Oreo
Yapabilecekleriniz, çağrı aktivitenize/parçanıza OnDateSetListener {on dateSet (Tarih tarihi);} gibi bir geriçağırım dinleyicisi uygulamaktır. Daha sonra setTargetFragment() öğesini kullanarak arayanı ayarlayabilir ve getTargetFragment iletişim parçanızdan alabilirsiniz. Ve sonra tarih seçimini tamamladığınızda, dinleyiciyi geri ver. – Milan