Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android ViewPagerIndicator-如何在片段之间切换_Android_Android Fragments_Viewpagerindicator - Fatal编程技术网

Android ViewPagerIndicator-如何在片段之间切换

Android ViewPagerIndicator-如何在片段之间切换,android,android-fragments,viewpagerindicator,Android,Android Fragments,Viewpagerindicator,我想在我的应用程序中使用JakeWharton库。我对示例SampleTabsDefault很感兴趣: 现在,我被卡住了。在这个示例中,我只更改文本,我想更改片段(每个片段都有自己的布局,每个布局都有不同的控件,如按钮、复选框等) 我想我必须在FragmentPagerAdapter的扩展类中更改此方法: public Fragment getItem(int position) { return TestFragment.newInstance(CONTENT[posi

我想在我的应用程序中使用JakeWharton库。我对示例SampleTabsDefault很感兴趣: 现在,我被卡住了。在这个示例中,我只更改文本,我想更改片段(每个片段都有自己的布局,每个布局都有不同的控件,如按钮、复选框等) 我想我必须在FragmentPagerAdapter的扩展类中更改此方法:

public Fragment getItem(int position) {
            return TestFragment.newInstance(CONTENT[position % CONTENT.length]);
        }
我想根据特定位置创建新片段(具有自己的布局)

我已经实现了以下代码:

public class MainActivity extends FragmentActivity {
    private static final String[] CONTENT = new String[] {"My Profile", "Statistics"};

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

        FragmentPagerAdapter adapter = new GoogleMusicAdapter(getSupportFragmentManager());

        ViewPager pager = (ViewPager)findViewById(R.id.pager);
        pager.setAdapter(adapter);

        TabPageIndicator indicator = (TabPageIndicator)findViewById(R.id.indicator);
        indicator.setViewPager(pager);



        }


    class GoogleMusicAdapter extends FragmentPagerAdapter {
        public GoogleMusicAdapter(FragmentManager fm) {
            super(fm);
        }


        public Fragment getItem(int position) {
            if (position==0)
            return MyProfile.newInstance(CONTENT[position % CONTENT.length]);
            else if (position==1)
            return Statistics.newInstance(CONTENT[position % CONTENT.length]);
            return null;
        }

        @Override
        public CharSequence getPageTitle(int position) {
            return CONTENT[position % CONTENT.length].toUpperCase();
        }

        @Override
        public int getCount() {
          return CONTENT.length;
        }
    }
}

这是:

public class Statistics extends Fragment {
      private static final String KEY_CONTENT = "TestFragment:Content";


        public static Statistics newInstance(String content) {
            Statistics fragment = new Statistics();

            fragment.mContent = content;

            return fragment;
        }

        private String mContent = "???";

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

            if ((savedInstanceState != null) && savedInstanceState.containsKey(KEY_CONTENT)) {
                mContent = savedInstanceState.getString(KEY_CONTENT);
            }


        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View view = inflater.inflate(R.layout.fragment_basic2, container, false);
            Button button = (Button) view.findViewById(R.id.fragment_button);

            button.setOnClickListener(new OnClickListener() {

                public void onClick(View v) {
                    Activity activity = getActivity();

                    if (activity != null) {
                        Toast.makeText(activity, "fragmen2", Toast.LENGTH_SHORT).show();
                    }
                }

            });

            return view;
        }

           @Override
            public void onSaveInstanceState(Bundle outState) {
                super.onSaveInstanceState(outState);
                outState.putString(KEY_CONTENT, mContent);
            }
}
但它不起作用。。。我无法切换页面,并且片段中的布局不会在
getItem()
方法中显示…

FragmentPagerAdapter
中,您可以根据位置返回其他片段。例如:

 public Fragment getItem(int position) {
 switch(position)
       {
               case 0:
                    TestFragment fragment = new TestFragment();  
                    return fragment;

                case 1:
                    TestFragment2 fragment2 = new TestFragment2();  
                    return fragment2;

         }

                    DefaultFragment fragment3 = new DefaultFragment();  
                    return fragment3;

         }

还是不行。原因可能是setContentView(R.layout.activity_main);在MainActivity类中?不,这是包含ViewPager的布局。当应用程序启动switch方法时,首先调用两个构造函数(fragment1和fragment2中的onCreate和onCreateView方法)。每个布局都不显示任何内容,我不能滑动屏幕,但我可以手动按下任何选项卡。
 public Fragment getItem(int position) {
 switch(position)
       {
               case 0:
                    TestFragment fragment = new TestFragment();  
                    return fragment;

                case 1:
                    TestFragment2 fragment2 = new TestFragment2();  
                    return fragment2;

         }

                    DefaultFragment fragment3 = new DefaultFragment();  
                    return fragment3;

         }