我有一个使用带有2个标签的视图寻呼机的活动。第一个选项卡收集许多输入(大约20个EditText字段)。第二个选项卡显示已输入内容以及任何验证错误的摘要。初始化选项卡布局时,将初始化两个片段。虽然我期望这种行为,但我不确定在用户更改第一个选项卡中的数据后更新片段2内容的最佳方法是什么。我没有在片段2中使用任何列表视图或类似的东西,它基本上只是一堆TextView。如果某些内容发生了变化,简单地重新创建片段2是否有意义?如果是这样的话?还是有更优雅的解决方案?这是我的活动:
public class SomeActivity extends BaseActivity implements OnDataPass, OnDataError {
private Tab1Fragment tab1Fragment;
private Tab2Fragment tab2Fragment;
private SomeData;
...
@Override
public SomeData getSomeData() {
return data;
}
@Override
public void error(List<Error> errors) {
// we have errors, need to update tab2
@Override
public void dataChanged() {
// we need to update tab 2 as it has stale data
}
@Override
public void onCreate(Bundle savedInstanceState) {
// get some data and setup the view pager
....
}
public class ViewPagerAdapter extends FragmentPagerAdapter {
private int tabSize = 2
Context context;
public ViewPagerAdapter(FragmentManager fragmentManager) {
super(fragmentManager);
}
@Override
public Fragment getItem(int position) {
MyTab selectedTab = selectedTab.getById(position);
switch (position) {
case 0:
tab1Fragment = Tab1Fragment.newInstance();
return tab1Fragment;
case 1:
tab2Fragment = Tab2Fragment.newInstance();
return tab2Fragment;
}
return null;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
return super.instantiateItem(container, position);
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
super.destroyItem(container, position, object);
}
@Override
public void setPrimaryItem(ViewGroup container, int position, Object object) {
super.setPrimaryItem(container, position, object);
}
@Override
public int getCount() {
return tabSize;
}
@Override
public CharSequence getPageTitle(int position) {
switch (position) {
case 0:
return "tab 1"
case 1:
return "tab 2"
}
}
}
}