我创建了一个Activity,其中包含一个n
个片段的ViewPager。我还添加了Previous,Next和Finish按钮。片段可以是多选ListViews,也可以只是一种答案类型。
当用户点击完成时,我应该如何从每个片段中获取数据?我应该从ViewPager获得onPageSelected事件的每个答案吗?
答案 0 :(得分: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上完成它时,我建议你这样做,这样你就可以确保你拥有数据了不再可用。