У меня есть рабочее приложение, в котором пользователь выбирает параметр из Spinner, пользователь автоматического открытия даты выбирает дату и просматривает данные. Тем не менее, я пытаюсь включить кнопку изображения (календарь), которая открывает средство выбора даты, а затем при выборе даты должны загружаться данные. Процесс должен быть таким: выберите Option из spinner -> выберите дату из datepicker, нажав Imagebutton -> загрузить/отобразить данные.
это событие onclick кнопки изображения:
imageButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final Calendar cldr = Calendar.getInstance();
int year = cldr.get(Calendar.YEAR);
int month = cldr.get(Calendar.MONTH);
int dayOfMonth = cldr.get(Calendar.DAY_OF_MONTH);
// date picker dialog
datePickerDialog = new DatePickerDialog(Dashboard.this,
AlertDialog.THEME_DEVICE_DEFAULT_DARK, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
Calendar calendar1 = Calendar.getInstance();
calendar1.set(year, month, dayOfMonth);
Date chosendate = calendar1.getTime();
calendar1.set(year, month, dayOfMonth);
chosendate = calendar1.getTime();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd",
Locale.JAPAN);
franchiseDate = formatter.format(chosendate);
}
}, year, month, dayOfMonth);
datePickerDialog.show();
datePickerDialog.getDatePicker().setMaxDate(cldr.getTimeInMillis());
}
это событие счетчика onItemSelected:
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int
position, long l) {
selectedItem = spinner.getSelectedItem().toString();
selectedPosition = spinner.getSelectedItemPosition();
if (selectedItem.equals("Revenue by Centre")) {
// String centerDate = franchiseDate;
Bundle bundle = new Bundle();
bundle.putString("authToken", authToken);
bundle.putString("centreDate", franchiseDate);
spinner.setEnabled(false);
Centre centre = new Centre();
centre.setArguments(bundle);
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction =
fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.multiFrame, Centre.class,
bundle);
fragmentTransaction.commit();
}
Данные отображаются во фрагменте, дата также является переменной, которая передается в класс фрагмента. Если я включаю spinner.setOnItemSelectedListener в событие imageButton.setOnClickListener, то данные загружаются после того, как я выбираю новую дату, т.е. снова выбираю дату без данных, выбираю дату, когда данные загружаются для ранее выбранной даты.
Решено.... вызов фрагмента в onDateSet