Подтвердить что ты не робот

FragmentActivity: нельзя отбрасывать из фрагмента в производный класс

Я пытаюсь использовать фрагмент в FragmentActivity, например:

TutViewerFragment viewer = (TutViewerFragment)    
getSupportFragmentManager().findFragmentById(R.id.tutview_fragment);

И мой TutViewerFragment расширяет Fragment. Однако я получаю сообщение об ошибке:

Невозможно передать из фрагмента в TutViewerFragment.

Я действительно не понимаю, почему это происходит. Почему он не может быть брошен?

4b9b3361

Ответ 1

Вы расширяете неправильный класс фрагментов. Импортируйте android.support.v4.app.Fragment вместо android.app.Fragment.

Ответ 2

Как указано в devconsole в комментарии выше: класс, который расширяет фрагмент, должен импортировать

android.support.v4.app.Fragment;

а не

android.app.Fragment;

Я предполагаю, что это связано с пакетом Android Compatibility Package. Проблема решена!

Ответ 3

Как указано 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, помогая мне решить эти незначительные проблемы.