2016-05-02 1 views
0

Ich möchte eine Aktivität, die eine Symbolleiste oben und unterhalb der toolbar haben gibt es eine gleitende tablayout mit 3 Tabs. Ich möchte eine fragment in jeder Registerkarte verwenden. wie folgt aus:Wie kann ich 3 Fragment in einem Schieberegisterlayout mit 3 Tabs verwenden

Fragment 1 innerhalb tab1
Fragment 2 innerhalb tab2
Fragment 3 innerhalb tab3

wie kann ich es definieren.

meine eigene pagerAdapter Code mit 3 verschiedenen fragment unten ist, aber ich weiß nicht, ist es richtig ist oder nicht:

class MyPagerAapter extends FragmentPagerAdapter { 
     String[] tabs; 
     public MyPagerAapter(FragmentManager fm) { 
      super(fm); 
      //tabs = getResources().getStringArray(R.array.tabs); 
      tabs = new String[]{"پیامهای دریافتی", "پیامهای ارسالی", "ارسال پیام"}; 
     } 
     @Override 
     public Fragment getItem(int position) { 
      Fragment myFragment=null; 
      if (position == 0) { 
       myFragment = MyFragment0.getInstance(0); 
      } 
      if (position == 1) { 
       myFragment = MyFragment1.getInstance(1); 
      } 
      if (position == 2) { 
       myFragment = MyFragment2.getInstance(2); 
      } 
      return myFragment; 
     } 
     @Override 
     public CharSequence getPageTitle(int position) { 
      return tabs[position]; 
     } 
     @Override 
     public int getCount() { 
      return 3; 
     } 
    } 
    public static class MyFragment0 extends Fragment { 
     private TextView textView; 
     public static MyFragment0 getInstance(int position) { 
      MyFragment0 myFragment = new MyFragment0(); 
      Bundle args = new Bundle(); 
      args.putInt("position", position); 
      myFragment.setArguments(args); 
      return myFragment; 
     } 
     @Nullable 
     @Override 
     public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
      View layout = inflater.inflate(R.layout.fragment_one, container, false); 
      textView = (TextView) layout.findViewById(R.id.position); 
      Bundle bundle = getArguments(); 
      if (bundle != null) { 
       textView.setText("The Page Selected Is 0000000" + bundle.getInt("position")); 
      } 
      return layout; 
     } 
    } 
    public static class MyFragment1 extends Fragment { 
     private TextView textView; 
     public static MyFragment1 getInstance(int position) { 
      MyFragment1 myFragment = new MyFragment1(); 
      Bundle args = new Bundle(); 
      args.putInt("position", position); 
      myFragment.setArguments(args); 
      return myFragment; 
     } 
     @Nullable 
     @Override 
     public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
      View layout = inflater.inflate(R.layout.fragment_two, container, false); 
      textView = (TextView) layout.findViewById(R.id.position); 
      Bundle bundle = getArguments(); 
      if (bundle != null) { 
       textView.setText("The Page Selected Is 1111111" + bundle.getInt("position")); 
      } 
      return layout; 
     } 
    } 
    public static class MyFragment2 extends Fragment { 
     private TextView textView; 
     public static MyFragment2 getInstance(int position) { 
      MyFragment2 myFragment = new MyFragment2(); 
      Bundle args = new Bundle(); 
      args.putInt("position", position); 
      myFragment.setArguments(args); 
      return myFragment; 
     } 
     @Nullable 
     @Override 
     public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
      View layout = inflater.inflate(R.layout.fragment_three, container, false); 
      textView = (TextView) layout.findViewById(R.id.position); 
      Bundle bundle = getArguments(); 
      if (bundle != null) { 
       textView.setText("The Page Selected Is 22222222" + bundle.getInt("position")); 
      } 
      return layout; 
     } 
    } 
} 
+0

Es gibt eine viel Beispiel für diese Art von Dingen in SO und an anderen Orten. Ich schlage vor, dass Sie sehr genau auf Ihre Probleme eingehen. –

+0

Wo ist die Lösung, über die Sie sprechen? @ReazMurshed – moji

Antwort

0

This ist, was Sie genau suchen

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

Dank Ihrer Antwort. Das war nützlich. Wie kann ich nun Daten in diesen Fragmenten darstellen? Entschuldigung, ich bin Anfänger in Android. @ aditya-vyas – moji

+0

Froh, Ihnen zu helfen, wenn Sie eine andere Frage haben, können Sie getrennte Frage stellen. Happy Coding :) –

+0

ja. Ich werde bald fragen. danke @ aditya-vyas – moji

Verwandte Themen