ImageView在SwipeTabs之后更改Android

问题描述:

拍完我的照片和签名后,它会显示在ImageView上。但是,在交换标签之后,ImageView返回到其默认图像。看我的截图。ImageView在SwipeTabs之后更改Android

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); 
     } 
    } 
} 

当你通过一个TabLayout标签(片段,实际上)轻扫,默认行为是系统杀死以前Fragment以释放内存和随后的片段到当前会被加载到内存中。

现在,您的代码正在发生类似的事情。当您在第三个选项卡(CaptureSignatureFragment)中加载照片和签名,然后滑过选项卡时,CaptureSignatureFragment将被终止,因此两个ImageView都会为其设置默认图像。

如果你想保持数据的第三个标签,即使更换标签后完好无损,你最好设置你的ViewPager的offscreen limit至4(没有你的选项卡。)由:

viewPager.setOffscreenPageLimit(4) 

现在,改变该标签不会杀死任何fragments。但是,这样做会造成性能问题。

+1

这解决了我的问题:)谢谢先生,顺便说一句,谢谢你的信息。打的好! –