ImageView 更改后 SwipeTabsAndroid

发布时间: 2017/3/19 17:17:59
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我把我的照片后, Signature ,它将显示在 ImageView 。然而,之后我制表符替换 ImageView 将返回到其默认图像。看到我的截图。

sample image- screenshot

就没有问题,当它来到 editText 的输入的值是还在那里。然而, ImageView 是我的问题。什么导致这个问题?和如何可以解决此问题?

代码︰

public class RegisterUser extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View v =inflater.inflate(R.layout.activity_register_user,container,false);
        // Setting ViewPager for each Tabs
        ViewPager viewPager = (ViewPager) v.findViewById(R.id.viewpager);
        setupViewPager(viewPager);
        // Set Tabs inside Toolbar
        TabLayout tabs = (TabLayout) v.findViewById(R.id.tabs);
        tabs.setupWithViewPager(viewPager);
        // Create Navigation drawer and inlfate layout

        return v;
    }

    // Add Fragments to Tabs
    private void setupViewPager(ViewPager viewPager) {
        Adapter adapter = new Adapter(getChildFragmentManager());
        adapter.addFragment(new ListContentFragment(), "Info 1");
        adapter.addFragment(new TileContentFragment(), "info 2");
        adapter.addFragment(new CaptureSignatureActivity(), "info 3");
        adapter.addFragment(new CardContentFragment(), "info 4");
        viewPager.setAdapter(adapter);
    }

    static class Adapter extends FragmentPagerAdapter {
        private final List<Fragment> mFragmentList = new ArrayList<>();
        private final List<String> mFragmentTitleList = new ArrayList<>();

        public Adapter(FragmentManager manager) {
            super(manager);
        }

        @Override
        public Fragment getItem(int position) {
            return mFragmentList.get(position);
        }

        @Override
        public int getCount() {
            return mFragmentList.size();
        }

        public void addFragment(Fragment fragment, String title) {
            mFragmentList.add(fragment);
            mFragmentTitleList.add(title);
        }

        @Override
        public CharSequence getPageTitle(int position) {
            return mFragmentTitleList.get(position);
        }
    }
}

解决方法 1:

当你 swipe 通过选项卡 (实际上fragment) 在 TabLayout,默认行为是系统杀死前 Fragment 免费内存和随后 Fragment 到当前一将加载到内存中。

现在,与您的代码类似的事情发生。当你加载一张照片, signature 在第三届选项卡 (CaptureSignatureFragment),然后 swipe 通过选项卡, CaptureSignatureFragment 被杀,因此这两个 ImageViews 默认图像设置给他们。

如果你想要保持数据的第三选项卡中更改选项卡后,即使,你应该更好地设置您 ViewPager offscreen limit 到 4 (no。选项卡你有) 由︰

viewPager.setOffscreenPageLimit(4)

现在,更改选项卡不会杀死任何的 fragments 。但是,这样做可以创建性能问题。

赞助商