1

我正在开发一个应用程序,它由一个带有三个 Fragment 的 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 开发方面相对较新,无法弄清楚这一点。我可能试图使用错误的组件来做到这一点。

谢谢

4

1 回答 1

2

我刚遇到同样的问题,试试这个!在您的初始化 FragmentActivity 中:

public CustomViewPager getpager(){
        return pager;
    }

在“初始化步骤 1”中:

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对象,这样你就可以在每个fragment中使用它来在fragment之间随意切换了!

于 2013-05-15T14:28:10.280 回答