如何使用视图寻呼机更新另一个选项卡的内容

时间:2015-01-03 21:51:30

标签: android android-fragments android-viewpager

我有一个使用带有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"
            }
        }
    }
}

0 个答案:

没有答案