изменить (2-й ответ):
Я играл с кодом и до сих пор не уверен, ПОЧЕМУ это происходит, определенно что-то не так в диспетчере фрагментов, когда он обменивается фрагментами (замените (resId, фрагмент))
В моем фрагменте onCreateView был такой код:
View view = inflater.inflate(R.layout.post_fragment, null, false);
if (item == null)
return view;
return BuildView(view);
post_fragment - это пустой холст с 1 ScrollView, 1 LinearLayout внутри и некоторыми другими ViewGroups внутри него. Это делается для загрузки пустого холста при 1-й загрузке (элемент равен нулю), а во 2-й раз при вводе пользователем получаются фактические данные для показа.
по некоторым причинам, которые мне не известны, как видно из logcat, FragmentManagerImpl.moveToState вызывал ScrollView.AddChild, вызывая ошибку.
Теперь я изменил свои фрагменты на CreateView на:
if (item == null)
return inflater.inflate(R.layout.empty, null, false);
View view = inflater.inflate(R.layout.post_fragment, null, false);
return BuildView(view);
так что «пустой» холст - это FrameLayout, на котором ничего нет, и теперь все работает счастливо.
Я уверен, что это звучит как какая-то странная ошибка в реальной структуре фрагментов, но это обходной путь.
1-й ответ:
Raptrex, насколько я вижу. Да, этот макет таблицы - единственный ребенок, который есть у вашего scrowview. У меня точно такая же проблема, и я очень расстроен, пытаясь ее решить.
Из LogCat / Debug, кажется, что в диспетчере фрагментов есть что-то, что вызывает, и .AddView (просмотр) в моем ScrollView (проверьте журнал), это зависит от того, как я изменяю свой XML-макет, я получаю эту ошибку или нет что, скажем так, звучит довольно абсурдно!
Есть идеи как? Почему? Что? Я слушаю ...
FATAL EXCEPTION: main
java.lang.IllegalStateException: ScrollView can host only one direct child
at android.widget.ScrollView.addView(ScrollView.java:219)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:787)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:977)
at android.app.BackStackRecord.run(BackStackRecord.java:638)
at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1309)
at android.app.FragmentManagerImpl$1.run(FragmentManager.java:398)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:132)
at android.app.ActivityThread.main(ActivityThread.java:4123)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:491)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
at dalvik.system.NativeStart.main(Native Method)