2013-07-01 1 views
0

자식 뷰가 LinearLayout에 랩핑 된 레이아웃 파일의 파일 이름은 ScrollView입니다. 그 레이아웃 파일 요약하면 :ScrollView 부분의 IllegalStateException

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

내가 구글 here 내 헤드 라인 조각이 ListView을 사용하여 설명 헤드 라인 + 기사 조각과 비슷한 무언가를 만드는 또 다른 SherlockFragment와 연계하여 SherlockListFragment을 사용하고 내 문서 조각 동안 위에서 설명한 ScrollView 레이아웃을 사용하고 있습니다.

현재 전화를 코딩 중이므로 조각으로 작업 할 때 FrameLayout 대체 기술을 사용하고 있습니다. 내 "기사"조각을 잘 얻을 수 있지만 뒤로 누르면 다음 오류가 발생합니다. 이것은 보통의 LinearLayout으로 바꿔 버리기 때문에 ScrollView 때문에 발생하는 것 같습니다. 누구든지이 문제가 발생하는 이유를 알고 올바른 해결 방법을 지적 할 수 있습니까?

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) 
+0

.. – Tarun

+0

나는에 링크 된 유연한 UI 기사와 같은 구현을 사용하고 있습니다. 유일한 차이점은 내 기사 단편에서 앞서 설명한 레이아웃 파일을 사용한다는 점입니다. – codedawg82

답변

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; 
    }