Ответ 1
Вы расширяете неправильный класс фрагментов. Импортируйте android.support.v4.app.Fragment
вместо android.app.Fragment
.
Я пытаюсь использовать фрагмент в FragmentActivity, например:
TutViewerFragment viewer = (TutViewerFragment)
getSupportFragmentManager().findFragmentById(R.id.tutview_fragment);
И мой TutViewerFragment
расширяет Fragment
. Однако я получаю сообщение об ошибке:
Невозможно передать из фрагмента в TutViewerFragment.
Я действительно не понимаю, почему это происходит. Почему он не может быть брошен?
Вы расширяете неправильный класс фрагментов. Импортируйте android.support.v4.app.Fragment
вместо android.app.Fragment
.
Как указано в devconsole в комментарии выше: класс, который расширяет фрагмент, должен импортировать
android.support.v4.app.Fragment;
а не
android.app.Fragment;
Я предполагаю, что это связано с пакетом Android Compatibility Package. Проблема решена!
Как указано devconsole/igor, нам необходимо обеспечить, чтобы класс Fragment, используемый в обоих классах, был таким же. т.е. andorid.app.Fragment в обоих
public class WorkoutDetailFragment extends Fragment
и в классе Activity, где мы пытаемся получить ссылку на фрагмент.
WorkoutDetailFragment workoutDetailFragment = (WorkoutDetailFragment)getFragmentManager().findFragmentById(R.id.detail_frag);
Обеспечение того же класса фрагментов в обоих файлах приведет к исключению класса cast exception.
Надеюсь, это поможет. Я знаю его немного поздно. Я новичок в Android и изучаю нюансы замечательного языка. Благодаря Stackoverflow, помогая мне решить эти незначительные проблемы.