Я новичок в разработке для Android, и у меня возникла проблема в моем ListFragment. Я пытаюсь запустить DatePickerDialog с помощью кнопки. Код в моем ListFragment выглядит следующим образом:
@Override
public void onActivityCreated(final Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
b = (Button) getView().findViewById(R.id.button_set_date);
et = (EditText) getView().findViewById(R.id.editText_choose_date);
b.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
DialogFragment picker = new DatePickerFragment();
picker.show(getActivity().getSupportFragmentManager(), "datePicker");
}
});
@Override
public void returnDate(String date) {
et.setText(date);
}
И вот мой DatePickerFragment:
public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {
TheListener listener;
public interface TheListener {
public void returnDate(String date);
}
@Override
public Dialog onCreateDialog (Bundle savedInstanceState){
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);
listener = (TheListener) getActivity();
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());
if (listener != null){
listener.returnDate(formattedDate);
}
}
}
После нажатия на кнопку возникла следующая ошибка:
java.lang.ClassCastException: MainActivity нельзя преобразовать в DatePickerFragment$TheListener
Внутри "стандартного" фрагмента код работает.
После поиска решения я проверил некоторые возможности:
1.) вместо getSupportFragmentManager
, usinggetFragmentManager
--> «Не удается разрешить метод 'show (android.app.FragmentManager.java.lang.String)'
2.) вместо 'getActivity().getSupportFragmentManager()', используя только 'getFragmentManager()' --> Также после нажатия на кнопку произошла следующая ошибка:
java.lang.ClassCastException: MainActivity нельзя преобразовать в DatePickerFragment$TheListener
3.) Я попытался изменить свой импорт import android.support.v4.app.ListFragment;
на android.app.ListFragment;
Также в двух других моих «стандартных» фрагментах я изменил импорт на «android.app.Fragment».
--> Здесь у меня возникают проблемы с моей MainActivity из-за этой части:
@Override
public Fragment getItem(int position) {
// getItem is called to instantiate the fragment for the given page.
// Return a PlaceholderFragment (defined as a static inner class below).
switch (position){
case 0: return TestListFragment.newInstance("a", "b");
case 1: return TestFragment.newInstance("a","b");
case 2: return TestFragment2.newInstance("a", "b");
default: return PlaceholderFragment.newInstance(position + 1);
}
}
Очевидно, что моя MainActivity не работает с import android.app.Fragment; и сбои.
Я надеюсь, что вы можете помочь мне!