Надуйте Viewstub, который содержит фрагмент

Есть ли проблемы при накачке viewstub, который содержит фрагмент. В крашалитике я редко вижу

Fatal Exception: android.view.InflateException
Binary XML file line #2: Error inflating class fragment

Вызванный

Caused by java.lang.IllegalStateException

Действие запускается нажатием кнопки мыши, как показано ниже.

public void openPlayer() {
    if (mSlidingLayout != null) {
        if (mSlidingLayout.findViewById(R.id.viewer_stub) != null) {
            ViewStub stub = (ViewStub) mSlidingLayout.findViewById(R.id.viewer_stub);
            stub.inflate();
        }
        mSlidingLayout.expandPanel();
    }
}

1 ответ

Недавно я наткнулся на тот же вопрос и проверил его.

Фрагмент внутри ViewStub работает.

Единственное отличие состоит в том, что Fragment начнет свой жизненный цикл при вызове метода inflate() для ViewStub.


Ваша проблема в содержании фрагмента.

Просто чтобы проверить, я создал Fragment, который идет внутри ViewStub и выдает RTE, когда представления собирались создать.

public class UserSetupFragment extends Fragment {


   @Override
   public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
       System.out.println("Create View");
       throw new RuntimeException("Test");
   }

}

На консоли я получаю следующее исключение:

01-02 06:48:19.260: E/AndroidRuntime(31533): android.view.InflateException: Binary XML file line #6: Error inflating class fragment

Как вы можете видеть, если что-то произойдет сбой до того, как ваш вид будет успешно возвращен, вы получите InflateException.

Вы должны выполнить отладку внутри класса фрагментов или опубликовать его код.

Другие вопросы по тегам