我正在开发一个应用程序,它由一个带有三个片段的FragmentActivity组成。我想从第一个片段到第三个片段,最后一个片段带有“下一个”按钮。为此,我正在使用viewPager和pagerAdpater(我禁用了viewpager上的分页/滑动)。我的“下一步”按钮已经在他们自己的片段中实现。我有一个xml布局用于每个片段,一个用于包含viewpager的fragmentActivity。
我正在尝试使用OnClickListener,我可以使用setCurrentItem(index)方法从第一个视图转到最后一个视图。
问题是我不知道在哪里放置OnClickListener,因为我的片段中没有viewpager引用。
如何在我的片段中获取viewpager引用?我是否必须将OnClickListener方法放在其他地方?
以下是我的3个碎片之一的代码:
public class InitializationStep1 extends Fragment{
private PagerAdapter mPagerAdapter;
CustomViewPager pager;
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = (LinearLayout)inflater.inflate(R.layout.initialization_step1_layout, container, false);
Button button = (Button) v.findViewById(R.id.goToStep2);
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
CustomViewPager pager = (CustomViewPager) v.findViewById(R.id.viewpager);
if(pager == null)
System.out.println("It's null..."); // always getting a null value
else
pager.setCurrentItem(0);
}
});
return v;
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
setUserVisibleHint(true);
}
}
这是我的FragmentActivity:
public class Initialization extends FragmentActivity{
private PagerAdapter mPagerAdapter;
CustomViewPager pager;
Button b1;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.viewpager_initialization_layout);
//initialize the pager
List<Fragment> fragments = new Vector<Fragment>();
fragments.add(Fragment.instantiate(this, InitializationStep1.class.getName()));
fragments.add(Fragment.instantiate(this, InitializationStep2.class.getName()));
fragments.add(Fragment.instantiate(this, InitializationStep3.class.getName()));
this.mPagerAdapter = new PagerAdapter(super.getSupportFragmentManager(), fragments);
pager = (CustomViewPager)super.findViewById(R.id.viewpager);
pager.setPagingEnabled(false);
pager.setAdapter(this.mPagerAdapter);
pager.setCurrentItem(0);
}
}
总结一下,我有:
- 实施3个碎片(1,2和3)
我想得到:
- 每个片段包含一个按钮以转到下一个片段(1 - > 2 - > 3)
- 包含“完成”按钮的最后一个片段(因为没有下一个要导航的片段)
我认为这是一个非常简单的动作,但我在Android开发方面相对较新,无法解决这个问题。我可能试图使用错误的组件来做到这一点。
由于
答案 0 :(得分:2)
我遇到了同样的问题,试试吧!在Initialization FragmentActivity中:
public CustomViewPager getpager(){
return pager;
}
在“InitializationStep1”中:
CustomViewPager pager;
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = (LinearLayout)inflater.inflate(R.layout.initialization_step1_layout, container, false);
pager = ((Initialization)getActivity()).getpager();
Button next = (Button) v.findViewById(R.id.button1);
next.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
pager.setCurrentItem(2);
}
});
通过这种方式,您可以获得在FragmentActivity中声明的viewpager对象,这样您就可以在每个片段中使用它来根据需要在片段之间切换!