sar*_*ath 4 android android-fragments fragmentpageradapter
我正在开发 Android 应用程序。在我的应用程序中,我必须使用 5 个片段并从片段 1 滑动到片段 5。所以我使用了一个 FragmentActivity 、FragmentPagerAdapter 和 5 个片段。现在我可以滑动浏览所有片段,并可以通过使用来识别当前片段
ViewPager.OnPageChangeListener()
Run Code Online (Sandbox Code Playgroud)
我必须在所有片段中添加按钮,并且单击按钮必须像滑动一样打开下一个片段。我怎么能这样做呢?在这里我发布一些我的代码片段。
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);
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
以下是我用于滑动片段的 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) {
}
Run Code Online (Sandbox Code Playgroud)
}
我的片段之一如下。片段_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);
}
}
Run Code Online (Sandbox Code Playgroud)
请帮助解决我的问题。
嗯,这确实非常简单。
每个片段都允许您获取父活动的实例。一旦你知道了,你就可以假设它ViewPager已经在那里实例化了。只需获取它并增加类似的位置ViewPager即可:
next.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// Change to next fragment onClick
ViewPager vp = (ViewPager) getActivity().findViewById(R.id.pager); // Fetch ViewPager instance
vp.setCurrentItem(vp.getCurrentItem()+1); // Increment ViewPager's position
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4826 次 |
| 最近记录: |