Делаю так: Создаю класс:
public class DatePicker extends DialogFragment
implements DatePickerDialog.OnDateSetListener {
int year;
int month;
int day;
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
year = getArguments().getInt("year");
month = getArguments().getInt("month") - 1;
day = getArguments().getInt("day");
// создаем DatePickerDialog и возвращаем его
Dialog picker = new DatePickerDialog(getActivity(), this, year, month, day);
return picker;
}
@Override
public void onStart() {
super.onStart();
// добавляем кастомный текст для кнопки
Button nButton = ((AlertDialog) getDialog())
.getButton(DialogInterface.BUTTON_POSITIVE);
nButton.setText(getResources().getString(R.string.Ok));
}
@Override
public void onDateSet(android.widget.DatePicker datePicker, int year,
int month, int day) {
Button btDate = (Button) getActivity().findViewById(R.id.btDate);
btDate.setText(day + "-" + month + "-" + year);
Intent intent = new Intent();
intent.putExtra("year",year);
intent.putExtra("month",month);
intent.putExtra("day",day);
getTargetFragment().onActivityResult(getTargetRequestCode(), aInpData.RESULT_OK, intent);
}
}
Использую так:
public void onCl_btDate(View view) {
Bundle args = new Bundle();
args.putInt("year", idt.getYear());
args.putInt("month", idt.getMonth());
args.putInt("day", idt.getDay());
DialogFragment dateDialog = new DatePicker();
dateDialog.setArguments(args);
dateDialog.setTargetFragment(dateDialog, GET_DATE);
dateDialog.show(getSupportFragmentManager(), dateDialog.getClass().getName());
}
ловлю в
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
FLAG_EXIT = true;
if (resultCode == RESULT_OK) {
switch (requestCode) {
case GET_DATE:{
int year = data.getIntExtra("year", 1);
default: break;
}
}
}
}
Как "вытащить" данные в виде переменных?
Вы можете передать к-л инфу через аргументы при запуске диалога. Используйте Bundle
и Fragment#setArguments(Bundle args)
.
Если фрагмент запускаете из активити, то при его закрытии вызовите метод активити, передав туда нужные данные.
Если же вы захотите из фрагмента вызывать диалог, то вам поможет FragmentDialog#setTargetFragment(Fragment fr, int requestCode)
- работает аналогично onActivityResult
. Подробнее тут
Виртуальный выделенный сервер (VDS) становится отличным выбором
Как потоки в Java соотносятся с потоками в операционной системе ? Например, в UNIX системах есть системный вызов threadВызывается ли он при создании...
Дали документацию api в которой только id вызываемых параметров, но их значений нетЧтобы отправить запрос по url адресу эти id, нужны ли мне уже...