繁体   English   中英

在Android中查找MyPagerAdapter对象名称,如何?

[英]Finding MyPagerAdapter object name in Android, how?

我有一个viewpager,有几个片段。 可以在FormActivity中实例化pageradapter。

//initialise pager for swipe screens
    ViewPager pager = (ViewPager) findViewById(R.id.viewPager);
    MyPagerAdapter adapter = new MyPagerAdapter(getSupportFragmentManager());
    pager.setAdapter(adapter);

但是,然后我需要访问MyPagerAdapter.getRegisteredFragment(),但是我不知道适配器的对象名称是什么,或者我怎么知道如何从getSupportManager()中检索适配器的名称? 这是viewpager代码;

public class MyPagerAdapter extends FragmentStatePagerAdapter {
        SparseArray<Fragment> registeredFragments = new SparseArray<Fragment>();

        public MyPagerAdapter(FragmentManager fm) {

            super(fm);
        }

        @Override
        public Fragment getItem(int pos) {
            switch(pos) {

                case 0: return FirstFragment.newInstance("@string/form_instruct");
                case 1: return SecondFragment.newInstance("SecondFragment, Instance 1");
                case 2: return ThirdFragment.newInstance("ThirdFragment, Instance 1");
                case 3: return FourthFragment.newInstance("FourthFragment, Instance 1");
                //case 4: return FifthFragment.newInstance("ThirdFragment, Instance 3");
                default: return FirstFragment.newInstance("FirstFragment, Default");
            }
        }

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

        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            Fragment fragment = (Fragment) super.instantiateItem(container, position);
            registeredFragments.put(position, fragment);
            return fragment;
        }

        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
            registeredFragments.remove(position);
            super.destroyItem(container, position, object);
        }

        public Fragment getRegisteredFragment(int position) {
            return registeredFragments.get(position);
        }
    }

以及我调用adapter.getRegisteredFragment()的方法

public void DrawText() {
        // Fetching user details from sqlite
        HashMap<String, String> user = db.getUserDetails();

        if (user.size() != 0) {

            // Displaying the user details on the screen
            Fragment n = adapter.getRegisteredFragment(0);
            n.surnameText.setText(surname);

        }else{
            Log.e(TAG, "table not filled");
        }
    }

非常感谢您的帮助,谢谢。

像这样为视图分页器创建一个对象

public MyPagerAdapter adapter;

然后实例化对象

adapter = new MyPagerAdapter(getSupportFragmentManager())
pager.setAdapter(adapter); 

然后调用方法执行此操作

Fragment fragment = adapter.getRegisteredFragment(pager.getCurrentItem); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM