1

私はAndroidで非常に新しく、今回はビデオチュートリアルを見てビューページャーのタブ付きアクティビティを作成しました。ユーザーがtab1(最初のフラグメントを表示)、tab2(2番目のフラグメントを表示)、tab3(3番目のフラグメントを表示)のように位置をスライドさせると3つの異なるフラグメントが表示されます。 すべてのタブに対して1つのフラグメントしか表示していませんview-pager、タブ付きのアクティビティで、3つの異なるタブに対して3つの異なるフラグメントを表示したいAndroid

これは、という名前のアダプタクラスです。 package com.example.jaison.news;私のポイントを取得していない人のための

public class datafragment extends Fragment { 
View view; 
ViewPager viewPager; 
TabLayout tabLayout; 


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


    viewPager = (ViewPager) view.findViewById(R.id.viewpager); 
    viewPager.setAdapter(new sliderAdapter(getChildFragmentManager())); 
    tabLayout = (TabLayout) view.findViewById(R.id.sliding_tabs); 
    tabLayout.post(new Runnable() { 
     @Override 
     public void run() { 
      tabLayout.setupWithViewPager(viewPager); 
     } 
    }); 

    return view; 

} 




private class sliderAdapter extends FragmentPagerAdapter{ 

    final String tabs[]={"tab1", "tab2","tab3"}; 
    public sliderAdapter(FragmentManager fm) { 
     super(fm); 
    } 


    @Override 
    public Fragment getItem(int position) { 
     Fragment fragment = null; 

     return fragment; 
    } 


    @Override 
    public int getCount() { 


     return 3; 
    } 
    @Override 
    public CharSequence getPageTitle(int position) { 
     return tabs[position]; 
    } 
} 




} 

は、私が必要とするすべては、ちょうどこのようなコードの何かを実装しているが、私はこのことについてわからない...

 switch (position) { 
      case 0: 

       //showing first fragment 


      case 1: 

        //showing second fragment 


      case 2: 
       //showing third fragment 
      default: 
       return new Fragment(); 
     } 
+0

HTTPSこの参照://www.androidhive.info/2015/09/android-material-design-working-with-tabs/ – MinnuKaAnae

+0

私は私に答え? –

+0

あなたは3つの異なるフラグメントxmlファイルと3つのフラグメントクラスを作成する必要があります。上記のリンクをステップバイステップで実行してください。 – MinnuKaAnae

答えて

0

変更あなたのgetItemメソッドのように

@Override 
public Fragment getItem(int position) { 
    Fragment fragment = null; 
    switch (position){ 
     case 0: 
      fragment = new Tab1Fragment(); 
      break; 
     case 1: 
      fragment = new Tab2Fragment(); 
      break; 
     case 2: 
      fragment = new Tab3Fragment(); 
      break; 
    } 
    return fragment; 
} 
+0

、これでも動作することができます。 – MadScientist

+0

私の編集した質問 –

+0

を参照してください?.............. –

0

使用この:

private void setupViewPager(ViewPager viewPager) { 
     ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager()); 
     // adding the fragments here with titles 
     adapter.addFragment(new OneFragment(), "ONE"); 
     adapter.addFragment(new TwoFragment(), "TWO"); 
     adapter.addFragment(new ThreeFragment(), "THREE"); 
     viewPager.setAdapter(adapter); 
    } 

    class ViewPagerAdapter extends FragmentPagerAdapter { 
     private final List<Fragment> mFragmentList = new ArrayList<>(); 
     private final List<String> mFragmentTitleList = new ArrayList<>(); 

     public ViewPagerAdapter(FragmentManager manager) { 
      super(manager); 
     } 

     @Override 
     public Fragment getItem(int position) { 
      return mFragmentList.get(position); 
     } 

     @Override 
     public int getCount() { 
      return mFragmentList.size(); 
     } 

     public void addFragment(Fragment fragment, String title) { 
      mFragmentList.add(fragment); 
      mFragmentTitleList.add(title); 
     } 

     @Override 
     public CharSequence getPageTitle(int position) { 
      return mFragmentTitleList.get(position); 
      //return null; 
     } 
    } 

は次のように設定します。

ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager); 
setupViewPager(viewPager); 

tabLayout = (TabLayout) view.findViewById(R.id.sliding_tabs); 
tabLayout.setupWithViewPager(viewPager); 

はそれが役に立てば幸い!

0

viewPagerAdapterのインスタンスを作成し、それにアイテムを追加する必要があります。 このような何か:viewpagerアダプタの

ViewPagerAdapter viewpagerAdapter = new ViewPagerAdapter(getChildFragmentManager()); 

viewPager.setAdapter(viewpagerAdapter); 

// then add items to it as you add items to a recyclerview adapter or to any list 

viewpagerAdapter.addFragment(new Fragment1(), "title1"); 

とカスタム・コードは次のとおりです。

public class ViewPagerAdapter extends FragmentPagerAdapter { 
    private final List<Fragment> mFragmentList = new ArrayList<>(); 
    private final List<String> mFragmentTitleList = new ArrayList<>(); 

    public ViewPagerAdapter(FragmentManager manager) { 
     super(manager); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     return mFragmentList.get(position); 
    } 

    @Override 
    public int getCount() { 
     return mFragmentList.size(); 
    } 

    public void addFragment(Fragment fragment, String title) { 
     mFragmentList.add(fragment); 
     mFragmentTitleList.add(title); 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     return mFragmentTitleList.get(position); 
    } 
} 
また

あなたがプログラミングに新しいているので、あなたが例えばのために、適切な用語を使用するようにアドバイスします。クラスの名前は、常に

class ClassName 

void methodName 
0

MainActivity

import android.os.Bundle; 
import android.support.design.widget.TabLayout; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentPagerAdapter; 
import android.support.v4.view.ViewPager; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 

import java.util.ArrayList; 
import java.util.List; 

public class MainActivity extends AppCompatActivity { 

private Toolbar toolbar; 
private TabLayout tabLayout; 
private ViewPager viewPager; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

    viewPager = (ViewPager) findViewById(R.id.viewpager); 
    setupViewPager(viewPager); 

    tabLayout = (TabLayout) findViewById(R.id.tabs); 
    tabLayout.setupWithViewPager(viewPager); 
} 

private void setupViewPager(ViewPager viewPager) { 
    ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager()); 
    adapter.addFragment(new OneFragment(), "ONE"); 
    adapter.addFragment(new TwoFragment(), "TWO"); 
    adapter.addFragment(new ThreeFragment(), "THREE"); 
    viewPager.setAdapter(adapter); 
} 

class ViewPagerAdapter extends FragmentPagerAdapter { 
    private final List<Fragment> mFragmentList = new ArrayList<>(); 
    private final List<String> mFragmentTitleList = new ArrayList<>(); 

    public ViewPagerAdapter(FragmentManager manager) { 
     super(manager); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     return mFragmentList.get(position); 
    } 

    @Override 
    public int getCount() { 
     return mFragmentList.size(); 
    } 

    public void addFragment(Fragment fragment, String title) { 
     mFragmentList.add(fragment); 
     mFragmentTitleList.add(title); 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     return mFragmentTitleList.get(position); 
    } 
} 
} 

OneFragment.java

import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 


public class OneFragment extends Fragment{ 

public OneFragment() { 
    // Required empty public constructor 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    return inflater.inflate(R.layout.fragment_one, container, false); 
} 

} 

fragment_one.xml

大文字の最初の文字で始まります
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/one" 
    android:textSize="40dp" 
    android:textStyle="bold" 
    android:layout_centerInParent="true"/> 

</RelativeLayout> 

Likewise create few more fragment activities with same code we used for OneFragment.java. 
+0

ありがとうございますが、これで私はナビゲーションの引き出しとviewpagerを結合しています –

+0

このhttps://stackoverflow.com/a/45302902/5594218、タブ付きのナビゲーションドロワー用 – MinnuKaAnae

+0

ありがとうございました...そして私は答えを得ました –

0

を理解し、実装するのはとても簡単です。このチュートリアルに従ってください:ここで私は、多くの場合、ViewPagerで使用されているので、次にはあなたのために有用であろうこれもTabLayoutを使用 を。

それはAPIが必要です。

compile 'com.android.support:design:25.3.1' 

この例では単純に行きたい場合は、XMLとJavaファイルからTabLayoutのすべての部分を無視して削除することができます。

1 activity_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 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="match_parent"> 

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

    <android.support.design.widget.TabLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="@color/colorPrimary" 
     app:tabIndicatorColor="@color/colorPrimaryDark" 
     app:layout_scrollFlags="scroll|enterAlways" 
     android:id="@+id/tabLayout"/> 

</RelativeLayout> 

2フラグメントTab1.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" android:layout_height="match_parent"> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" 
    android:layout_centerVertical="true" 
    android:text="TAB 1" 
    android:id="@+id/textTab1"/> 

</RelativeLayout> 

3.フラグメントTab2.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" android:layout_height="match_parent"> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" 
    android:layout_centerVertical="true" 
    android:text="TAB 2" 
    android:id="@+id/textTab2"/> 

</RelativeLayout> 

4.フラグメントTab3.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" android:layout_height="match_parent"> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" 
    android:layout_centerVertical="true" 
    android:text="TAB 3" 
    android:id="@+id/textSpacerNoTitleab3"/> 

</RelativeLayout> 

5 MainActivity.java

public class MainActivity extends AppCompatActivity 
    implements TabLayout.OnTabSelectedListener, ViewPager.OnPageChangeListener{ 

ViewPager viewPager; 
TabLayout tabLayout; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    viewPager = (ViewPager) findViewById(R.id.viewPager); 
    tabLayout = (TabLayout) findViewById(R.id.tabLayout); 

    tabLayout.addTab(tabLayout.newTab().setText("Page 1")); 
    tabLayout.addTab(tabLayout.newTab().setText("Page 2")); 
    tabLayout.addTab(tabLayout.newTab().setText("Page 3")); 
    tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); 
    tabLayout.addOnTabSelectedListener(this); 

    viewPager.setAdapter(new VPAdapter(getSupportFragmentManager())); 
    viewPager.addOnPageChangeListener(this); 
} 

@Override 
public void onTabSelected(TabLayout.Tab tab) { 
    w("onTabSelected(): "+tab.getPosition()); 
    viewPager.setCurrentItem(tab.getPosition()); 
} 

@Override 
public void onTabUnselected(TabLayout.Tab tab) { 

} 

@Override 
public void onTabReselected(TabLayout.Tab tab) { 

} 

@Override 
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 

} 

@Override 
public void onPageSelected(int position) { 
    w("onPageSelected(): "+position); 
    TabLayout.Tab tab = tabLayout.getTabAt(position); 
    if(tab!=null)tab.select(); 
} 

@Override 
public void onPageScrollStateChanged(int state) { 

} 

void w(String string){ 
    Log.w("MKN",getClass().getSimpleName()+" "+string); 
} 
} 

6.フラグメントクラスTab1.java パブリッククラスTab1をフラグメント{

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
    super.onCreateView(inflater, container, savedInstanceState); 
    return inflater.inflate(R.layout.tab1,container,false); 
} 
} 
を拡張

7.フラグメントクラスTab2.java

public class Tab2 extends Fragment { 
@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
    super.onCreateView(inflater, container, savedInstanceState); 
    return inflater.inflate(R.layout.tab2,container,false); 
} 
} 

8.フラグメントクラスTab3.java

public class Tab3 extends Fragment { 
@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
    super.onCreateView(inflater, container, savedInstanceState); 
    return inflater.inflate(R.layout.tab3,container,false); 
} 
} 

9アダプタクラスVPAdapter.java

public class VPAdapter extends FragmentPagerAdapter { 

Fragment[] tabs = new Fragment[3]; 
public VPAdapter(FragmentManager fm) { 
    super(fm); 
    tabs[0] = new Tab1(); 
    tabs[1] = new Tab2(); 
    tabs[2] = new Tab3(); 
} 

@Override 
public Fragment getItem(int position) { 
    return tabs[position]; 
} 

@Override 
public int getCount() { 
    return 3; 
} 
} 
関連する問題