0

我创建了一个包含 ViewPager 和n片段数的活动。我还添加了上一个、下一个和完成按钮。片段要么是多项选择列表视图,要么只是一个答案类型。

当用户点击完成时,我应该如何从每个片段中获取数据?我应该从 ViewPager 获得关于 onPageSelected 事件的每个答案吗?

4

1 回答 1

1

片段和包含它的活动之间的通信是通过接口完成的。

片段应该公开一个接口监听器,并且活动应该实现它并在事件发生时得到片段的通知。

您可以使用我的示例,也可以进行更改以使活动不实现,但您可以在运行时匿名创建侦听器(就像您多次为单击侦听器上的按钮所做的那样)。

class MyFragment {

    // Container Activity must implement this interface
    public interface OnNextPageListener {
        public void onNextPageSelected(String DataString);
    }

    // define listener in fragment
    OnNextPageListener mNextPageListener;

.... class code

  @Override
    public void onAttach(Activity activity) {
      try {
            mNextPageListener = (OnNextPageListener) activity;
        } catch (ClassCastException e) {
            throw new ClassCastException(activity.toString()
                    + " must implement OnNextPageListener");
        }
.... class code...

   ...button press onclick listener method...
   mNextPageListener.onNextPageSelected("My Name is Slim Shaddy");

}


class MainActivity extends Activity implements MyFragment.OnNextPageListener 
    public void onNextPageSelected(String StringData) {
    }
    ...

在这里阅读更多http://developer.android.com/training/basics/fragments/communicating.html

无论哪种方式,我建议您在有人按下片段中的按钮或挂钩 ViewPager.OnPageChangeListener 时执行此操作,开始在 onPageScrollStateChanged 上保存数据并在 OnPageSelected 上完成它,这样即使片段不可用,您也可以确保您拥有数据了。

于 2013-05-21T15:26:47.397 回答