2017-12-14 4 views

答えて

0

内の各ページタイトルについてそれぞれ異なるFragmentを追加するには助けてください は

class TabAdapter(fragmentManager: FragmentManager) : FragmentPagerAdapter(fragmentManager) { 

    override fun getItem(position: Int) = SampleFragment() //SampleFragment() is my fragment 

    override fun getCount() = 4 

    override fun getPageTitle(position: Int) = when (position) { 
     0 -> "Music" 
     1 -> "Market" 
     2 -> "Films" 
     else -> "Books" 
    } 
} 

あなたの助けに前もって感謝そして、これは私のSampleFragment()

class SampleFragment : Fragment() { 

    override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, 
           savedInstanceState: Bundle?): View? { 
     return inflater!!.inflate(R.layout.fragment_sample, container, false) 
    } 

} 

のコードですフラグメントを素早くアダプターに追加する方法。

表示するすべてのフラグメントを保持するには、ViewPagerが必要です。

まず、次のようにXMLを編集します。

<RelativeLayout 
    android:id="@+id/main_layout" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    tools:context=".MainActivity"> 

    <ViewPager 
     android:id="@+id/pager" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/tab_layout" /> 

    <android.support.design.widget.TabLayout 
     android:id="@+id/tab_layout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="?attr/colorPrimary" 
     android:elevation="6dp" 
     android:minHeight="?attr/actionBarSize" 
     android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/> 

</RelativeLayout> 

次の新しいフラグメントを作成し、Fragment_one.javaという名前を付けます。ここの中には、あなたが活動のようにしたいことを何でもすることができます。 Fragment_two.javaを作成し、必要な数だけ作成してアダプターでインスタンス化します。

public class fragmentAdapter extends FragmentStatePagerAdapter { 
    int mNumOfTabs; 

    public fragmentAdapter(FragmentManager fm, int NumOfTabs){ 
     super(fm); 
     this.mNumOfTabs = NumOfTabs; 
    } 

    @Override 
    public Fragment getItem(int position) { 
     // Add as many fragment in this method 
     switch (position){ 
      case 0: 
       Fragment_one frag_one = new Fragment_one(); 
       return frag_one; 
      case 1: 
       Fragment_two frag_two = new Fragment_two(); 
       return frag_two; 
      default: 
       return null; 
     } 

    } 

    @Override 
    public int getCount() { 
     return mNumOfTabs; 
    } 

} 

次あなたMainActivity.java

TabLayout tabLayout = (TabLayout) view.findViewById(R.id.tab_layout); 

//add as many fragments you want to add the "fragment 1" & "fragment 2" is 
//the title for your fragments, it starts for '0','1','2'... 
tabLayout.addTab(tabLayout.newTab().setText("fragment 1")); 
tabLayout.addTab(tabLayout.newTab().setText("fragment 2")); 
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); 

ViewPager viewPager = (ViewPager) findViewById(R.id.pager); 
final fragmentAdapter adapter = new Adapter(getActivity(),tablayout.geTabCount()); 
viewPager.setAdapter(adapter); 
onCreate()メソッドの中にこれを追加します(これは、カスタムアダプタ用です) fragmentAdapter.Javaを作成し、これらのコードを追加します。
関連する問題