更改片段按钮单击时FragmentPagerAdapter适配器位置

时间:2014-01-15 09:31:10

标签: android android-fragments fragmentpageradapter

我正在开发Android应用程序。在我的应用程序中,我必须使用5个片段并从片段1到5进行滑动。所以我使用了一个FragmentActivity,FragmentPagerAdapter和5个片段。 现在我可以浏览所有片段,并使用

识别当前片段
ViewPager.OnPageChangeListener()

我必须在所有片段中添加按钮,按钮点击必须打开下一个片段,如滑动。我怎么能这样做?在这里,我发布了一些代码片段。

fragmentactivity.java

public class HomeScreen extends FragmentActivity 
{
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.themed_circles);

    mAdapter = new InsuranceFragmentAdapter(getSupportFragmentManager(),
            HomeScreen.this);
    mPager = (ViewPager) findViewById(R.id.pager);
    mPager.setAdapter(mAdapter);
    mIndicator = (CirclePageIndicator) findViewById(R.id.indicator);
    mIndicator.setViewPager(mPager);
    // mIndicator.setCurrentItem(2);

    mIndicator
            .setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
                private int pos;

                @Override
                public void onPageSelected(int position) {

                }

                @Override
                public void onPageScrolled(int position,
                        float positionOffset, int positionOffsetPixels) {


                }

                @Override
                public void onPageScrollStateChanged(int state) {
                    System.out.println("test scroll state" + state);

                }
            });
}

  }

以下是我的FragmentPagerAdapter用于滑动片段。

FragmentPagerAdapter.java


public class InsuranceFragmentAdapter extends FragmentPagerAdapter {
Context contx;


public InsuranceFragmentAdapter(FragmentManager fm, Context ctx) {

    super(fm);
    this.contx = ctx;


}

@Override
public Fragment getItem(int position) {
    Fragment fragment = null;
    switch (position) {
    case 0:
        fragment = Fragment.instantiate(contx, com.lic.fragments.FragmentBasicPersonal.class.getName());
        break;

    case 1:
        fragment = Fragment.instantiate(contx, com.lic.fragments.FragmentationNomineeDetails.class.getName());
        break;

    }

    return fragment;
}

@Override
public int getCount() {

    return 2;
}



public void setCount(int count) {

}

}

我的一个片段如下。     fragment_one.java

public class FragmentFemale extends Fragment {

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

   }

   @Override
   public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View layout = inflater.inflate(R.layout.fragment_female_husband, container, false);
            next= (Button) layout.findViewById(R.id.save);
            next.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
                   //need to change to next fragment
          }
            }
       return layout;
   }

   @Override
   public void onSaveInstanceState(Bundle outState) {
       super.onSaveInstanceState(outState);
     //  outState.putString(KEY_CONTENT, mContent);
   }
}

请帮助解决我的问题。

1 个答案:

答案 0 :(得分:1)

我会将下一个按钮插入到片段活动中,而不是在每个片段中插入相同的按钮。但当然这取决于你的设计。如果你想只有一个下一个按钮,你可以使用sherlock bar并将你的按钮保持在屏幕上。

如果你的设计需要在Fragments中有按钮,那么我会选择使用接口。您可以从片段活动中侦听片段的单击事件。并根据碎片位置设置您的碎片寻呼机适配器当前项目。

但无论如何,请查看本教程。我相信这会有所帮助。

Vogella Fragments Tutorial