2013-08-07 3 views
0

늙어서 물어 봤기 때문에 죄송합니다. 하지만 모든 샘플을 시도했지만 모두 작동하지 않았습니다.문제는 "지정된 자식에 이미 부모가 있으므로 먼저 해당 자식의 부모에 대해 removeView()를 호출해야합니다."

protected void onInitializeView() { 
    super.onInitializeView(); 
    // header text 
    TextView tvHeader = (TextView) findViewById(R.id.tvHeader); 
    tvHeader.setSelected(true); 
    tvHeader.setText(DataLocator.INSTANT.getCurrentCategory().getTitle()); 
    // set title 
    TextView tvTitle = (TextView) findViewById(R.id.tvTitle); 
    tvTitle.setText(article.getTitle()); 
    TextView tvDatetime = (TextView) findViewById(R.id.tvDatetime); 
    tvDatetime.setText(article.getDistributionDate()); 
    TextView tvShortContent = (TextView) findViewById(R.id.tvShortContent); 
    tvShortContent.setText(article.getShortContent()); 
    // setting web view 
    webView = (WebView) findViewById(R.id.webview); 
    webView.getSettings().setBuiltInZoomControls(true); 
    webView.getSettings().setJavaScriptEnabled(true); 
    webView.getSettings().setPluginsEnabled(true); 
    webView.setWebViewClient(new WebViewClient() { 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      OSUtil.gotoURL(getActivity(), url); 
      return true; 
     } 
    }); 
    webView.getSettings() 
      .setUserAgentString(
        "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.36 (KHTML, like Gecko) Chrome/13.0.766.0 Safari/534.36"); 

    webView.getSettings().setAllowFileAccess(true); 
    webView.getSettings().setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN); 
    // get view 
    layoutReload = findViewById(R.id.layoutReload); 
    progressBar = findViewById(R.id.layoutProgress); 
    findViewById(R.id.btnShare).setOnClickListener(this); 
    findViewById(R.id.btnReload).setOnClickListener(this); 
    findViewById(R.id.btnBack).setOnClickListener(this); 
    loadContentArticle(); 
} 

가 로그 :

08-07 03:40:38.069: W/dalvikvm(2193): threadid=1: thread exiting with uncaught exception (group=0xb4c73908) 
08-07 03:40:38.069: E/AndroidRuntime(2193): FATAL EXCEPTION: main 
08-07 03:40:38.069: E/AndroidRuntime(2193): java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first. 
08-07 03:40:38.069: E/AndroidRuntime(2193):  at android.view.ViewGroup.addViewInner(ViewGroup.java:3339) 
08-07 03:40:38.069: E/AndroidRuntime(2193):  at android.view.ViewGroup.addView(ViewGroup.java:3210) 
08-07 03:40:38.069: E/AndroidRuntime(2193):  at android.view.ViewGroup.addView(ViewGroup.java:3186) 
08-07 03:40:38.069: E/AndroidRuntime(2193):  at android.view.LayoutInflater.rInflate(LayoutInflater.java:750) 
08-07 03:40:38.069: E/AndroidRuntime(2193):  at android.view.LayoutInflater.rInflate(LayoutInflater.java:749) 
08-07 03:40:38.069: E/AndroidRuntime(2193):  at android.view.LayoutInflater.rInflate(LayoutInflater.java:749) 
08-07 03:40:38.069: E/AndroidRuntime(2193):  at android.view.LayoutInflater.inflate(LayoutInflater.java:489) 
08-07 03:40:38.069: E/AndroidRuntime(2193):  at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 
08-07 03:40:38.069: E/AndroidRuntime(2193):  at com.vmodev.cpdt.fragments.base.BaseFragment.onCreateView(BaseFragment.java:20) 
08-07 03:40:38.069: E/AndroidRuntime(2193):  at android.support.v4.app.Fragment.performCreateView(Fragment.java:1460) 
08-07 03:40:38.069: E/AndroidRuntime(2193):  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:911) 
08-07 03:40:38.069: E/AndroidRuntime(2193):  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1088) 
08-07 03:40:38.069: E/AndroidRuntime(2193):  at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682) 
08-07 03:40:38.069: E/AndroidRuntime(2193):  at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1444) 
08-07 03:40:38.069: E/AndroidRuntime(2193):  at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:461) 
08-07 03:40:38.069: E/AndroidRuntime(2193):  at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141) 
08-07 03:40:38.069: E/AndroidRuntime(2193):  at android.support.v4.view.ViewPager.populate(ViewPager.java:1064) 
08-07 03:40:38.069: E/AndroidRuntime(2193):  at android.support.v4.view.ViewPager.populate(ViewPager.java:911) 
08-07 03:40:38.069: E/AndroidRuntime(2193):  at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1432) 
08-07 03:40:38.069: E/AndroidRuntime(2193):  at android.view.View.measure(View.java:15513) 
08-07 03:40:38.069: E/AndroidRuntime(2193):  at android.widget.LinearLayout.measureVertical(LinearLayout.java:847) 
08-07 03:40:38.069: E/AndroidRuntime(2193):  at android.widget.LinearLayout.onMeasure(LinearLayout.java:588) 
08-07 03:40:38.069: E/AndroidRuntime(2193):  at android.view.View.measure(View.java:15513) 
08-07 03:40:38.069: E/AndroidRuntime(2193):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4827) 
08-07 03:40:38.069: E/AndroidRuntime(2193):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
08-07 03:40:38.069: E/AndroidRuntime(2193):  at android.view.View.measure(View.java:15513) 
08-07 03:40:38.069: E/AndroidRuntime(2193):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4827) 
08-07 03:40:38.069: E/AndroidRuntime(2193):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
08-07 03:40:38.069: E/AndroidRuntime(2193):  at android.view.View.measure(View.java:15513) 
08-07 03:40:38.069: E/AndroidRuntime(2193):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4827) 
08-07 03:40:38.069: E/AndroidRuntime(2193):  at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404) 
08-07 03:40:38.069: E/AndroidRuntime(2193):  at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:1052) 
08-07 03:40:38.069: E/AndroidRuntime(2193):  at android.widget.LinearLayout.onMeasure(LinearLayout.java:590) 
08-07 03:40:38.069: E/AndroidRuntime(2193):  at android.view.View.measure(View.java:15513) 
08-07 03:40:38.069: E/AndroidRuntime(2193):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4827) 
08-07 03:40:38.069: E/AndroidRuntime(2193):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
08-07 03:40:38.069: E/AndroidRuntime(2193):  at android.view.View.measure(View.java:15513) 
08-07 03:40:38.069: E/AndroidRuntime(2193):  at android.widget.LinearLayout.measureVertical(LinearLayout.java:847) 
08-07 03:40:38.069: E/AndroidRuntime(2193):  at android.widget.LinearLayout.onMeasure(LinearLayout.java:588) 
08-07 03:40:38.069: E/AndroidRuntime(2193):  at android.view.View.measure(View.java:15513) 
08-07 03:40:38.069: E/AndroidRuntime(2193):  at com.jeremyfeinstein.slidingmenu.lib.CustomViewAbove.onMeasure(CustomViewAbove.java:456) 
08-07 03:40:38.069: E/AndroidRuntime(2193):  at android.view.View.measure(View.java:15513) 
08-07 03:40:38.069: E/AndroidRuntime(2193):  at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:645) 
08-07 03:40:38.069: E/AndroidRuntime(2193):  at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:425) 
08-07 03:40:38.069: E/AndroidRuntime(2193):  at android.view.View.measure(View.java:15513) 
08-07 03:40:38.069: E/AndroidRuntime(2193):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4827) 
08-07 03:40:38.069: E/AndroidRuntime(2193):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
08-07 03:40:38.069: E/AndroidRuntime(2193):  at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2176) 
08-07 03:40:38.069: E/AndroidRuntime(2193):  at android.view.View.measure(View.java:15513) 
08-07 03:40:38.069: E/AndroidRuntime(2193):  at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1874) 
08-07 03:40:38.069: E/AndroidRuntime(2193):  at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1089) 
08-07 03:40:38.069: E/AndroidRuntime(2193):  at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1265) 
08-07 03:40:38.069: E/AndroidRuntime(2193):  at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:989) 
08-07 03:40:38.069: E/AndroidRuntime(2193):  at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4351) 
08-07 03:40:38.069: E/AndroidRuntime(2193):  at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749) 
08-07 03:40:38.069: E/AndroidRuntime(2193):  at android.view.Choreographer.doCallbacks(Choreographer.java:562) 
08-07 03:40:38.069: E/AndroidRuntime(2193):  at android.view.Choreographer.doFrame(Choreographer.java:532) 
08-07 03:40:38.069: E/AndroidRuntime(2193):  at android.view.Choreographer$FrameDisplayEventR 

와 앱이 두 번째 시간을 볼 만들 때
그것은

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    view = LayoutInflater.from(getActivity()).inflate(getContentView(), null, false); 
    onInitializeView(); 
    return view; 
} 

@Override 
public void onDestroyView() { 
    super.onDestroyView(); 
    if (view != null) { 
     ViewGroup parentViewGroup = (ViewGroup) view.getParent(); 
     if (parentViewGroup != null) { 
      parentViewGroup.removeAllViews(); 
     } 
    } 
} 

나를 여기 그것을 해결하기 위해 도와주세요 예외를 발생하는 것은 onInitializeView입니다 내 레이아웃 :

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" > 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="@drawable/bg_action_bar_bak" 
    android:gravity="center_vertical" 
    android:orientation="horizontal" > 

    <ImageView 
     android:id="@+id/btnBack" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/icon_back_light" /> 

    <LinearLayout 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:gravity="center" > 

     <TextView 
      android:id="@+id/tvHeader" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:autoLink="web" 
      android:ellipsize="marquee" 
      android:marqueeRepeatLimit="marquee_forever" 
      android:singleLine="true" 
      android:textColor="@color/white" 
      android:textSize="16sp" /> 
    </LinearLayout> 

    <ImageView 
     android:id="@+id/btnShare" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/icon_share_light" /> 
</LinearLayout> 

<ScrollView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" > 

     <TextView 
      android:id="@+id/tvTitle" 
      style="@style/styleTextTitle" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:padding="5dp" 
      android:textSize="18sp" 
      android:textStyle="bold" /> 

     <TextView 
      android:id="@+id/tvDatetime" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:padding="5dp" 
      android:textStyle="italic" /> 

     <TextView 
      android:id="@+id/tvShortContent" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:autoLink="web" 
      android:padding="5dp" 
      android:textSize="16sp" 
      android:textStyle="bold" /> 

     <LinearLayout 
      android:id="@+id/layoutReload" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:gravity="center" 
      android:orientation="vertical" 
      android:padding="20dp" > 

      <TextView 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:gravity="center" 
       android:text="@string/error_lost_internet_connection" /> 

      <Button 
       android:id="@+id/btnReload" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:padding="15dp" 
       android:text="@string/btnReload" /> 
     </LinearLayout> 

     <LinearLayout 
      android:id="@+id/layoutProgress" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:gravity="center" 
      android:orientation="vertical" 
      android:padding="20dp" > 

      <ProgressBar 
       style="?android:attr/progressBarStyleLargeInverse" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" /> 

      <TextView 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:gravity="center" 
       android:text="@string/msg_loading" /> 
     </LinearLayout> 

     <com.vmodev.cpdt.views.HTML5WebView 
      android:id="@+id/webview" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:padding="2dp" /> 
    </LinearLayout> 
</ScrollView> 

+0

logCat a + xml laout –

+0

당신의 onInitializeView()에 무엇이 있습니까? ? 당신은 그것을 게시 할 수 있습니까? – msana

+0

예, 방금 –

답변

3

사용 removeAllViewsInLayout(); 대신 removeAllViews()

@Override 
public void onDestroyView() { 
    super.onDestroyView(); 
    if (view != null) { 
     ViewGroup parentViewGroup = (ViewGroup) view.getParent(); 
     if (parentViewGroup != null) { 
      parentViewGroup.removeAllViewsInLayout();; 
     } 
    } 
} 

내가하지 않도록 onDestroyView은()이 호출해야하는 유일한 장소입니다. 그러나보기를 parentViewGroup에 추가하기 전에 런타임 예외를 피하기 위해 parentViewGroup.removeAllViewsInLayout();;으로 전화하는 것이 좋습니다.

+0

을 업데이트했습니다. 동일한 예외가 발생합니다. –

+0

parentViewGroup에 하위 항목을 추가하기 전에 호출 했습니까? –

+0

이것은 속임수입니다! 입력 해 주셔서 감사합니다! –

관련 문제