如何在带有3个选项卡的滑动选项卡布局中使用3个片段(how can i use 3 fragment in a sliding tab layout with 3 tabs)

编程入门 行业动态 更新时间:2024-10-23 13:24:31
如何在带有3个选项卡的滑动选项卡布局中使用3个片段(how can i use 3 fragment in a sliding tab layout with 3 tabs)

我想在工具栏的顶部和下方创建一个toolbar其中有一个带有3个选项卡的滑动tablayout 。 我想在每个标签中使用一个fragment 。 喜欢这个:

tab1中的片段1 tab2中的片段2 tab3中的片段3

我该如何定义它。

我自己的pagerAdapter代码有3个不同的fragment如下,但我不知道它是否正确:

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; } } }

I want to make an activity that have a toolbar on top and below the toolbar there is an sliding tablayout with 3 tabs. i want to use a fragment in each tab. like this:

fragment 1 inside tab1 fragment 2 inside tab2 fragment 3 inside tab3

how can i define it.

my own pagerAdapter code with 3 different fragment is below but i don't know is it correct or not:

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; } } }

最满意答案

这正是你要找的

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

This is what exactly you looking for

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

更多推荐

本文发布于:2023-08-07 12:07:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1464230.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:选项卡   片段   布局   如何在   fragment

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!