0

我有一个布局文件,它的子视图LinearLayoutScrollView. 总结该布局文件:

<ScrollView android:id="@+id/scrollView">
    <LinearLayout android:id="@+id/scrollViewChildLayout">
        ... lots of text and image views ...
    </LinearLayout>
</ScrollView>

我将 aSherlockListFragment与另一个结合使用SherlockFragment来创建类似于 Google在此处详述的 Headlines+Articles 片段我的标题片段使用的是 a ListView,而我的 Articles 片段使用的是上述ScrollView布局。

目前,我正在为手机编码,所以在处理片段时我使用了FrameLayout替换技术。我可以很好地访问我的“文章”片段,但是当我按下返回时,会出现以下错误。这似乎是因为ScrollView只用常规的 LinearLayout 换掉它就可以了。有谁知道为什么会导致这个问题,并且可以指出解决它的正确方法?

E/AndroidRuntime: FATAL EXCEPTION: main
        java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
        at android.view.ViewGroup.addViewInner(ViewGroup.java:3339)
        at android.view.ViewGroup.addView(ViewGroup.java:3210)
        at android.view.ViewGroup.addView(ViewGroup.java:3155)
        at android.view.ViewGroup.addView(ViewGroup.java:3131)
        at android.support.v4.app.NoSaveStateFrameLayout.wrap(NoSaveStateFrameLayout.java:40)
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:915)
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1088)
        at android.support.v4.app.BackStackRecord.popFromBackStack(BackStackRecord.java:764)
        at android.support.v4.app.FragmentManagerImpl.popBackStackState(FragmentManager.java:1493)
        at android.support.v4.app.FragmentManagerImpl.popBackStackImmediate(FragmentManager.java:477)
        at android.support.v4.app.FragmentActivity.onBackPressed(FragmentActivity.java:174)
        at com.tomra.recycle.AccountActivity.onBackPressed(AccountActivity.java:129)
        at android.app.Activity.onKeyUp(Activity.java:2145)
        at android.view.KeyEvent.dispatch(KeyEvent.java:2633)
        at android.app.Activity.dispatchKeyEvent(Activity.java:2375)
        at com.actionbarsherlock.app.SherlockFragmentActivity.dispatchKeyEvent(SherlockFragmentActivity.java:122)
        at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1847)
        at android.view.ViewRootImpl.deliverKeyEventPostIme(ViewRootImpl.java:3701)
        at android.view.ViewRootImpl.handleImeFinishedEvent(ViewRootImpl.java:3651)
        at android.view.ViewRootImpl$ViewRootHandler.handleMessage(ViewRootImpl.java:2818)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:5041)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:511)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
        at dalvik.system.NativeStart.main(Native Method)
4

1 回答 1

0

奇怪的行为,但改变 onCreateView 中的布局膨胀解决了这个问题。似乎该视图保留了先前的视图并试图对其进行膨胀。将 savedInstanceState 覆盖更改为false固定。更新了 onCreateView 如下。

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        Log.wtf(TAG, "onCreateView");

        mInflater = inflater;

        // rootView = mInflater.inflate(R.layout.ach_list_layout, container, savedInstanceState);
        rootView = mInflater.inflate(R.layout.ach_list_layout, container, false);

        return rootView;
    }
于 2013-07-01T22:58:22.747 回答