6

TabLayout Viewpagerが含む別のフラグメントにフラグメントを置きたいと思います。 >Aフラグメント - - >Bフラグメント(TabLayout ViewPager) - >Cフラグメント(タブのフラグメント) - >DフラグメントTabLayoutとViewPagerのフラグメントを別のフラグメントに置き換える方法

活性:このような私の仕事はスイッチフラグメントCからフラグメントDです。

注: - TabLayout ViewPagerには、タブのフラグメントコントロールがFragmentPagerAdapterで3つ含まれています。

Tablayoutフラグメントのレイアウト:

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

<android.support.design.widget.TabLayout 
    android:id="@+id/tablayout_postpaid_service" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="@color/colorPrimary" 
    app:tabGravity="fill" 
    app:tabIndicatorColor="@color/white" 
    app:tabMode="scrollable" 
    app:tabSelectedTextColor="@color/white" 
    app:tabTextColor="@color/tab_fade_text_color" > 
</android.support.design.widget.TabLayout> 

<android.support.v4.view.ViewPager 
    android:id="@+id/viewpager_postpaid_service" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <!-- <FrameLayout 
     android:id="@+id/container_body" 
     android:layout_width="fill_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" /> --> 
</android.support.v4.view.ViewPager> 

断片Bクラス:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    view = inflater.inflate(R.layout.fragment_select_postpaid_service, container, false); 

    tablayout = (TabLayout) view.findViewById(R.id.tablayout_postpaid_service); 
    viewpager = (ViewPager) view.findViewById(R.id.viewpager_postpaid_service); 
    viewpager.setAdapter(new TabPagerAdapter(getChildFragmentManager(), TabConstants.POSTPAID_SERVICE_TYPE_TABS_FLAG, TabConstants.POSTPAID_SERVICE_TYPE_TABS)); 


    tablayout.post(new Runnable() { 

     @Override 
     public void run() { 
      tablayout.setupWithViewPager(viewpager); 
      setupTabIcons(); 
     } 
    }); 
    return view; 
} 

断片Cクラス:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 

    view = inflater.inflate(R.layout.fragment_select_operator, container, 
      false); 
    setGridview(); 
    return view; 
} 
private void setGridview() { 

    operatorName = new ArrayList<String>(); 
    operatorCode = new ArrayList<String>(); 

    recyclerview = (RecyclerView) view 
      .findViewById(R.id.select_operator_recycler_view); 
    recyclerview.setHasFixedSize(true); 
    GridLayoutManager layoutManager = new GridLayoutManager(getActivity(), 
      Constants.NO_OF_OPERATOR_GRID); 
    recyclerview.setLayoutManager(layoutManager); 
    OperatorGridAdapter adapter = new OperatorGridAdapter(getActivity(), 
      HomeConstants.OPERATOR_LIST_ICON); 
    recyclerview.setAdapter(adapter); 
    recyclerview.addOnItemTouchListener(new RecyclerItemClickListener(
      getActivity(), 
      new RecyclerItemClickListener.OnItemClickListener() { 

       @Override 
       public void onItemClick(View view, int position) { 
        navigateFragment(position); 
       } 

      })); 
} 
private void navigateFragment(int position) { 

    Fragment fragment = new DFragment(); 

    // FragmentTransaction fragmentTransaction = getChildFragmentManager().beginTransaction(); 
    FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction(); 
    fragmentTransaction.replace(R.id.container_body, fragment); 
    //fragmentTransaction.addToBackStack(null); 

    fragmentTransaction.commit(); 
    ((AppCompatActivity) getActivity()).getSupportActionBar().setTitle(
      getResources().getString(R.string.app_name)); 
    Log.d(Constants.ACTIVITY_TAG, "********************"); 
} 


私はEを取得エラー

java.lang.IllegalArgumentException: No view found for id 0x7f0a006e (com.recharge:id/container_body) for fragment DFragment{4327cfd0 #2 id=0x7f0a006e} 
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1070) 
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1259) 
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738) 
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1624) 
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:517) 

私は多くのダニと解決策を試しましたが、私のためにヒットしませんでした。
この問題を解決してください。

+0

限り私は理解して、あなたが作成しようとしていますネストされたタブレイアウト。 –

+0

@ Gaurav Balbhadraは言うことができます......実際には、TabLayoutのフラグメントを含むTabフラグメントを別のフラグメントに変更したいのですが。 –

+0

こちらをご覧くださいhttp://stackoverflow.com/questions/34261057/android-how-to-build-multiplelevel-tabs/34262629#34262629 –

答えて

0

試しましたか?

FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
fragmentTransaction.replace(R.id.main_container, new FragmentB()).commit(); 
+0

これはコード化されています断片Aで......ええ!私はそれをやった –

+0

しかし、ヒット..... :( –

+1

こんにちはGargの、私たちはビューページャでタブレイアウトを使用しているので、アクティビティxmlファイルにフレームレイアウトはありません。 main_container idを説明する? – sarankumar

0

と私は間違いがかなり明らかだと思います。コンパイルは言う:

not view found for container_body 

そして、あなたのコード内:

私はあなたが fragmentTransaction.replace(R.id.container_body、フラグメント)を使用してみていることがわかり
private void navigateFragment(int position) { 

Fragment fragment = new DFragment(); 

// FragmentTransaction fragmentTransaction = getChildFragmentManager().beginTransaction(); 
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction(); 
fragmentTransaction.replace(R.id.container_body, fragment); 
//fragmentTransaction.addToBackStack(null); 

fragmentTransaction.commit(); 
((AppCompatActivity) getActivity()).getSupportActionBar().setTitle(
     getResources().getString(R.string.app_name)); 
Log.d(Constants.ACTIVITY_TAG, "********************"); 

}

ただし、レイアウトにcontainer_bodyとコメントしてください。それで、コンパイルは、container_bodyが膨らむのを見つけることができないと言ったのです。多分それは問題ですか?また

あなたのフラグメントのレイアウトD.

が、これはあなたの問題を解決した場合、私に教えてくださいについての詳細情報を投稿することができれば、それは助けになるはずです;)

+0

そのコードはb'coz framelayoutコンポーネントがこの位置では適切ではないということをコメントしました。それはもう一つの例外を引き起こします...... thatsは私の実際の質問「tablayoutの断片の断片を置き換える方法」です。 –

関連する問題