2015-06-08 72 views
0

我有NavigationDrawer,當我第一次選擇ViewPager的片段時,所有工作都很好,但如果我第二次選擇該項目或更多,我會看到白色屏幕,請在ViewPager的片段中撥打onViewCreated。我如何解決它?ViewPager bug如果我再次打開屏幕

集片段與ViewPager:

getSupportFragmentManager().beginTransaction() 
    .replace(R.id.container, fragment) 
    .commit(); 

對於ViewPager我用FragmentPagerAdapter:

@Override 
    public Fragment getItem(int position) { 
     Fragment fragment = null; 

     switch (position) { 
      case 0: 
       fragment = new Fragment1(); 
       break; 
      case 1: 
       fragment = new Fragment2(); 
       break; 
      case 2: 
       fragment = new Fragment3(); 
       break; 
     } 

     return fragment; 
    } 

代碼在Fragment1Fragment2Fragment3

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     getData(); // get Data from internet 

    } 

    @Override 
    public void onViewCreated(View view, Bundle savedInstanceState) { 
     super.onViewCreated(view, savedInstanceState); 

     adapter = MyAdapter(getActivity(), R.layout.item_best, objects); 
     listView = (ListView) view.findViewById(R.id.listView); 
     listView.setAdapter(adapter); 
     listView.setOnItemClickListener(this); 
     swipeRefreshLayout = (SwipeRefreshLayout) view.findViewById(R.id.swipeRefreshLayout); 
     swipeRefreshLayout.setOnRefreshListener(onRefreshListener); 
     if (objects.size() == 0) { 
      swipeRefreshLayout.setRefreshing(true); 
     } 


    } 

    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     ... 
    } 
+0

附上視圖尋呼機代碼。你使用片段管理器的方式不適合你的方式 – EE66

+0

你在Fragment1,Fragment2,Fragment3中做什麼? –

+0

如果您使用'FragmentPagerAdapter',則不應手動附加片段。這應該由適配器來完成。 –

回答

0
View layout = inflater.inflate(R.layout.your_layout, container, false); 

    adapter = MyAdapter(getActivity(), R.layout.item_best, objects); 
    listView = (ListView) layout.findViewById(R.id.listView); 
    listView.setAdapter(adapter); 
    listView.setOnItemClickListener(this); 
    swipeRefreshLayout = (SwipeRefreshLayout) view.findViewById(R.id.swipeRefreshLayout); 
    swipeRefreshLayout.setOnRefreshListener(onRefreshListener); 
    if (objects.size() == 0) { 
     swipeRefreshLayout.setRefreshing(true); 
    } 

getData();

return layout; 

類似地嘗試在onCreateView

+0

它不能解決我的問題。這也是工作,onCreateView不要打電話,當我去第一次或更多的屏幕 – Vlad

+0

你可以上傳viewPager代碼。 –

+0

我用這個ViewPager http://developer.android.com/reference/android/support/v4/view/ViewPager.html – Vlad