2016-12-28 49 views
0

拍完我的照片和簽名後,它會顯示在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); 
     } 
    } 
} 

回答

1

當你通過一個TabLayout標籤(片段,實際上)輕掃,默認行爲是系統殺死以前Fragment以釋放內存和隨後的片段到當前會被加載到內存中。

現在,您的代碼正在發生類似的事情。當您在第三個選項卡(CaptureSignatureFragment)中加載照片和簽名,然後滑過選項卡時,CaptureSignatureFragment將被終止,因此兩個ImageView都會爲其設置默認圖像。

如果你想保持數據的第三個標籤,即使更換標籤後完好無損,你最好設置你的ViewPager的offscreen limit至4(沒有你的選項卡。)由:

viewPager.setOffscreenPageLimit(4) 

現在,改變該標籤不會殺死任何fragments。但是,這樣做會造成性能問題。

+1

這解決了我的問題:)謝謝先生,順便說一句,謝謝你的信息。打的好! –