我创建了一个包含 ViewPager 和n
片段数的活动。我还添加了上一个、下一个和完成按钮。片段要么是多项选择列表视图,要么只是一个答案类型。
当用户点击完成时,我应该如何从每个片段中获取数据?我应该从 ViewPager 获得关于 onPageSelected 事件的每个答案吗?
我创建了一个包含 ViewPager 和n
片段数的活动。我还添加了上一个、下一个和完成按钮。片段要么是多项选择列表视图,要么只是一个答案类型。
当用户点击完成时,我应该如何从每个片段中获取数据?我应该从 ViewPager 获得关于 onPageSelected 事件的每个答案吗?
片段和包含它的活动之间的通信是通过接口完成的。
片段应该公开一个接口监听器,并且活动应该实现它并在事件发生时得到片段的通知。
您可以使用我的示例,也可以进行更改以使活动不实现,但您可以在运行时匿名创建侦听器(就像您多次为单击侦听器上的按钮所做的那样)。
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 上完成它,这样即使片段不可用,您也可以确保您拥有数据了。