单击按钮时如何从 MainActivity 打开 viewpager 中的特定片段页面

How do i open a particular fragement page enshrined in viewpager from MainActivity when i click a button

我一直在努力从 mainactivity 打开 viewpager 适配器中的一些特定片段。现在,MainActivtity 与我定义 viewpager 的 Tips_4 Activity 完全不同。 我想要的是当我点击一个按钮时它会直接打开一个特定的片段。

这也是我尝试在单击按钮时仅 fragment_page1 打开的内容,但我想通过单击 Main[=36= 中的按钮来定位某些特定页面].

Button Tips0 = (Button)findViewById(R.id.mybtn1);
        Tips0.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent i = new Intent(MainActivity.this, Tips_4.class);
                startActivity(i);
            }
        });

这是MainActivity.java

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

        //--------I added button click listeners below ----------
        Tips1 = (Button) findViewById(R.id.mybtn1);
        Tips1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Fragment fragment = Page1Fragment.newInstance(1, "Page # 1");
                FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
                transaction.replace(R.id.container, fragment);
                transaction.addToBackStack(null);
                transaction.commit();
            }
        });

        Tips2 = (Button) findViewById(R.id.mybtn2);
        Tips2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Fragment fragment = Page2Fragment.newInstance(1, "Page # 2");
                FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
                transaction.replace(R.id.container, fragment);
                transaction.addToBackStack(null);
                transaction.commit();
            }
        });

        Tips3 = (Button) findViewById(R.id.mybtn1);
        Tips3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Fragment fragment = Page3Fragment.newInstance(1, "Page # 3");
                FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
                transaction.replace(R.id.container, fragment);
                transaction.addToBackStack(null);
                transaction.commit();
            }
        });
    }

这是 SimpleFragmentPageAdapter

public class SimpleFragmentPageAdapter extends FragmentPagerAdapter {
    private String[] tabtitle=new String[]{"Description","Directions","Developers","Page1","Page2","Page3","Page4","Page5","Page6","Page7","Page8","Page9","Page10","Page11","Page12","Page13","Page14","Page15","Page16","Page17","Page18","Page19","Page20","Page21","Page22","Page23","Page24","Page25","Page26","Page27","Page28","Page29","Page30","Page31","Page32","Page33","Page34","Page35","Page36","Page37","Page38","Page39","Page40","Page41","Page42","Page43","Page44"};
    Context context;
    private int pagecount=45;
    public SimpleFragmentPageAdapter(FragmentManager fm, Context context) {
        super(fm);
        this.context=context;
    }

    @Override
    public Fragment getItem(int position) {
        switch (position) {
            case 0: //Fragment # 0 - This will show DevelopersFragment
                return DescriptionFragment.newInstance(0, "page # 0");
            case 1: //Fragment # 0 - This will show Page1Fragment
                return Page1Fragment.newInstance(1, "Page # 1");
            case 2: //Fragment # 0 - This will show Page2Fragment
                return Page2Fragment.newInstance(2, "Page # 2");
            case 3: //Fragment # 0 - This will show Page3Fragment
                return Page3Fragment.newInstance(3, "Page # 3");
            case 4: //Fragment # 0 - This will show Page4Fragment
                return Page4Fragment.newInstance(4, "Page # 4");
            case 5: //Fragment # 0 - This will show Page5Fragment
                return Page5Fragment.newInstance(5, "Page # 5");
            case 6: //Fragment # 0 - This will show Page6Fragment
                return Page6Fragment.newInstance(6, "Page # 6");
            case 7: //Fragment # 0 - This will show Page7Fragment
                return Page7Fragment.newInstance(7, "Page # 7");
            case 8: //Fragment # 0 - This will show Page8Fragment
                return Page8Fragment.newInstance(8, "Page # 8");
            case 9: //Fragment # 0 - This will show Page9Fragment
                return Page9Fragment.newInstance(9, "Page # 9");
            case 10: //Fragment # 0 - This will show Page10Fragment
                return Page10Fragment.newInstance(10, "Page # 10");
            case 11: //Fragment # 0 - This will show Page11Fragment
                return Page11Fragment.newInstance(11, "Page # 11");
            case 12: //Fragment # 0 - This will show Page12Fragment
                return Page12Fragment.newInstance(12, "Page12");
            case 13: //Fragment # 0 - This will show Page13Fragment
                return Page13Fragment.newInstance(13, "Page13");
            case 14: //Fragment # 0 - This will show Page14Fragment
                return Page14Fragment.newInstance(14, "Page14");
            case 15: //Fragment # 0 - This will show Page15Fragment
                return Page15Fragment.newInstance(15, "Page15");
            case 16: //Fragment # 0 - This will show Page16Fragment
                return Page16Fragment.newInstance(16, "Page16");
            case 17: //Fragment # 0 - This will show Page17Fragment
                return Page17Fragment.newInstance(17, "Page17");
            case 18: //Fragment # 0 - This will show Page18Fragment
                return Page18Fragment.newInstance(18, "Page18");
            case 19: //Fragment # 0 - This will show Page19Fragment
                return Page19Fragment.newInstance(19, "Page19");
            case 20: //Fragment # 0 - This will show Page20Fragment
                return Page20Fragment.newInstance(20, "Page20");
            case 21: //Fragment # 0 - This will show Page21Fragment
                return Page21Fragment.newInstance(21, "Page21");
            case 22: //Fragment # 0 - This will show Page22Fragment
                return Page22Fragment.newInstance(22, "Page22");
            case 23: //Fragment # 0 - This will show Page23Fragment
                return Page23Fragment.newInstance(23, "Page23");
            case 24: //Fragment # 0 - This will show Page24Fragment
                return Page24Fragment.newInstance(24, "Page24");
            case 25: //Fragment # 0 - This will show Page25Fragment
                return Page25Fragment.newInstance(25, "Page25");
            case 26: //Fragment # 0 - This will show Page26Fragment
                return Page26Fragment.newInstance(26, "Page26");
            case 27: //Fragment # 0 - This will show Page27Fragment
                return Page27Fragment.newInstance(27, "Page27");
            case 28: //Fragment # 0 - This will show Page28Fragment
                return Page28Fragment.newInstance(28, "Page28");
            case 29: //Fragment # 0 - This will show Page29Fragment
                return Page29Fragment.newInstance(29, "Page29");
            case 30: //Fragment # 0 - This will show Page30Fragment
                return Page30Fragment.newInstance(30, "Page30");
            case 31: //Fragment # 0 - This will show Page31Fragment
                return Page31Fragment.newInstance(31, "Page31");
            case 32: //Fragment # 0 - This will show Page32Fragment
                return Page32Fragment.newInstance(32, "Page32");
            case 33: //Fragment # 0 - This will show Page33Fragment
                return Page33Fragment.newInstance(33, "Page33");
            case 34: //Fragment # 0 - This will show Page34Fragment
                return Page34Fragment.newInstance(34, "Page34");
            case 35: //Fragment # 0 - This will show Page35Fragment
                return Page35Fragment.newInstance(35, "Page35");
            case 36: //Fragment # 0 - This will show Page36Fragment
                return Page36Fragment.newInstance(36, "Page36");
            case 37: //Fragment # 0 - This will show Page37Fragment
                return Page37Fragment.newInstance(37, "Page37");
            case 38: //Fragment # 0 - This will show Page38Fragment
                return Page38Fragment.newInstance(38, "Page38");
            case 39: //Fragment # 0 - This will show Page39Fragment
                return Page39Fragment.newInstance(39, "Page39");
            case 40: //Fragment # 0 - This will show Page40Fragment
                return Page40Fragment.newInstance(40, "Page40");
            case 41: //Fragment # 0 - This will show Page41Fragment
                return Page41Fragment.newInstance(41, "Page41");
            case 42: //Fragment # 0 - This will show Page41Fragment
                return Page42Fragment.newInstance(42, "Page42");
            case 43: //Fragment # 0 - This will show Page41Fragment
                return Page43Fragment.newInstance(43, "Page43");
            case 44: //Fragment # 0 - This will show Page41Fragment
                return Page44Fragment.newInstance(44, "Page44");
            default:
                return null;
        }
    }

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

    @Nullable
    @Override
    public CharSequence getPageTitle(int position) {
        return "Maths page" + position;
    }
}

这是我定义viewpager

的Tips_4Activity
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_tips_4);

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

        ViewPager viewPager= (ViewPager) findViewById(R.id.view_pager);
        viewPager.setAdapter(new SimpleFragmentPageAdapter(getSupportFragmentManager(),this));

        //Attach the page change listener inside the activity
        viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            // This method will be invoked when a new page becomes selected
            @Override
            public void onPageSelected(int position) {
                Toast.makeText(Tips_4.this, "Selected Maths Page:" + position, Toast.LENGTH_SHORT).show();
            }
            // This method will be invoked when the current page is scrolled
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetpixels) {

            }
            // Called when the scroll state changes:
            //SCROLL_STATE_IDLE, SCROLL_STATE_DRAGGING, SCROLL_STATE_SETTLING
            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });


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


    }



}

将您想要的页码添加到您启动 activity 的意图中,并使用它来设置要显示的正确页面。

例如

public void onClick(View view) {
    Intent i = new Intent(MainActivity.this, Tips_4.class);
    // Start page 5 as the number starts at zero set the value to 4           
    i.putExtra("startPage", 4);
    startActivity(i);
}

在Tips_4Activity

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // Get the start page passed to us or default to first page
        Intent mIntent = getIntent();
        int startPage = mIntent.getIntExtra("startPage", 0);

        setContentView(R.layout.activity_tips_4);

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

        ViewPager viewPager= (ViewPager) findViewById(R.id.view_pager);
        viewPager.setAdapter(new SimpleFragmentPageAdapter(getSupportFragmentManager(),this));

        // set the current page to the start page
        viewpager.setCurrentItem(startPage);

....