Внедрение DatePicker в фрагменте
Я использую Fragment, который является экземпляром фрагмента, а не диалогового окна.
Я сделал google, большинство результатов поиска показывает, как использовать DialogFragment для DatePicker.
который не работает в моем случае из-за несоответствия типов фрагмента и диалогового окна
Любой пример или идея были бы полезны
Вот код фрагмента Java
public class CreateReportFragment extends Fragment {
public CreateReportFragment(){}
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
rootView = inflater.inflate(R.layout.activity_create_report, container, false);
initViews();
return rootView;
}
private void initViews()
{
final Calendar c = Calendar.getInstance();
year = c.get(Calendar.YEAR);
month = c.get(Calendar.MONTH);
day = c.get(Calendar.DAY_OF_MONTH);
editTextDate.setText(new StringBuilder()
// Month is 0 based, just add 1
.append(year)
.append("-")
.append(month + 1)
.append("-").append(day));
buttonDate = (Button)rootView.findViewById(R.id.buttonDate);
}
Как реализовать DatePicker в Фрагмент?
Ответы
Ответ 1
Используйте DialogFragment
Если я угадываю, что вы хотите показать DatePicker при нажатии кнопки buttonDate
http://developer.android.com/guide/topics/ui/controls/pickers.html
Вкл. кнопку нажмите
DialogFragment picker = new DatePickerFragment();
picker.show(getFragmentManager(), "datePicker");
DatePickerFragment.java
public class DatePickerFragment extends DialogFragment
implements DatePickerDialog.OnDateSetListener {
@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) {
Calendar c = Calendar.getInstance();
c.set(year, month, day);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String formattedDate = sdf.format(c.getTime());
}
}
Ответ 2
Как реализовать DatePicker во фрагменте?
Точно так же вы "реализуете" TextView
в Fragment
: have onCreateView()
возвращаете View
, который содержит или содержит DatePicker
. Например, у вас может быть файл макета, содержащий виджет DatePicker
и onCreateView()
раздувать этот макет.
Ответ 3
., который не работает в моем случае из-за несоответствия типа Fragment и DialogFragment
A DialogFragment
IS-A Fragment
, потому что он расширяет фрагмент. Поэтому вы можете использовать DialogFragment в любом месте фрагмента.