2017-02-27 84 views
0

我已經使用FragmentStatePagerAdapter使用視圖分頁器來加載分片。 當我第一次來它會工作,但如果我重定向到來自尋呼機適配器的其他片段,並回來它將顯示空白屏幕。當我們回來時,白色屏幕中的尋呼機片段狀態尋呼機適配器?

enter image description here

enter image description here

**fragment_community.xml** 

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       xmlns:app="http://schemas.android.com/apk/res-auto" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:orientation="vertical"> 

    <include 
     android:id="@+id/includeTop" 
     layout="@layout/layout_header" 
     android:layout_width="match_parent" 
     android:layout_height="50dp" 
     /> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_below="@+id/includeTop" 
     android:orientation="vertical" 
     > 

     <android.support.design.widget.TabLayout 
      android:id="@+id/tabAddFriend" 
      android:layout_width="match_parent" 
      android:layout_height="48dp" 
      android:layout_alignParentTop="true" 
      android:background="@drawable/tab_friend_selector" 
      android:fadeScrollbars="false" 
      app:tabGravity="fill" 
      app:tabIndicatorHeight="4dp" 
      app:tabMaxWidth="0dp" 
      app:tabMode="fixed" 
      app:tabSelectedTextColor="@color/colorDarkGray" 
      app:tabTextColor="@color/colorGray"> 
     </android.support.design.widget.TabLayout> 

     <android.support.v4.view.ViewPager 
      android:id="@+id/pagerCommunity" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_below="@id/tabAddFriend"/> 

    </LinearLayout> 

</LinearLayout> 

    **Community Fragment :** 
    import android.os.Bundle; 
    import android.support.design.widget.TabLayout; 
    import android.support.v4.app.Fragment; 
    import android.support.v4.app.FragmentActivity; 
    import android.support.v4.app.FragmentManager; 
    import android.support.v4.content.ContextCompat; 
    import android.support.v4.view.ViewPager; 
    import android.view.LayoutInflater; 
    import android.view.View; 
    import android.view.ViewGroup; 
    import android.widget.ImageView; 
    import android.widget.LinearLayout;  
    import com.****.app.R; 
    import com.****.app.adapter.CommunityPagerAdapter; 
    import com.****.app.customcontrol.CustomTextViewMedium; 
    import com.****.app.customcontrol.CustomTextViewRegular; 
    import com.****.app.utils.General; 
    import com.****.app.utils.ManageFragment; 

    public class CommunityFragment extends Fragment{ 

     public static final int FOLLOWERS = 0; 
     public static final int FOLLOWING = 1; 
     public static final int GROUPS = 2; 
     public static String LOGTAG = CommunityFragment.class.getSimpleName(); 
     // define activity layouts 
     LinearLayout linearBack, linearAction; 
     ImageView imgBack, imgAction; 
     CustomTextViewRegular txtTitle; 
     FragmentActivity activity; 

     String[] tabList; 
     //CustomViewPager pagerCommunity; 
     ViewPager pagerCommunity; 
     TabLayout tabAddFriend; 

     FragmentManager manager; 
     CommunityPagerAdapter communityPagerAdapter; 
     String operation=""; 
     public CommunityFragment(){ 

     } 

     @Override 
     public void onCreate (Bundle savedInstanceState){ 
      super.onCreate (savedInstanceState); 
      activity = this.getActivity(); 
      tabList = activity.getResources().getStringArray (R.array.communityArray); 
      //Bundle bundle=activity.getIntent().getExtr 
      if(getArguments()!=null){ 
       operation= getArguments().getString (General.REQUEST_TYPE); 
      } 
     } 

     @Override 
     public View onCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){ 
      View view = inflater.inflate (R.layout.fragment_community, container, false); 

      linearAction = (LinearLayout) view.findViewById (R.id.linearAction); 
      linearAction.setVisibility (View.VISIBLE); 
      linearBack = (LinearLayout) view.findViewById (R.id.linearBack); 
      imgBack = (ImageView) view.findViewById (R.id.imgBack); 
      imgAction = (ImageView) view.findViewById (R.id.imgAction); 
      imgAction.setImageResource (R.drawable.ic_block); 

      txtTitle = (CustomTextViewRegular) view.findViewById (R.id.txtTitle); 
      txtTitle.setText (getString (R.string.community)); 

      tabAddFriend = (TabLayout) view.findViewById (R.id.tabAddFriend); 

      pagerCommunity = (ViewPager) view.findViewById (R.id.pagerCommunity); 


      linearBack.setOnClickListener (new View.OnClickListener(){ 
       @Override 
       public void onClick (View v){ 
        ManageFragment.back (activity); 
       } 
      }); 

      imgBack.setOnClickListener (new View.OnClickListener(){ 
       @Override 
       public void onClick (View v){ 
        ManageFragment.back (activity); 
       } 
      }); 

      pagerCommunity.addOnPageChangeListener (new ViewPager.OnPageChangeListener(){ 
       @Override 
       public void onPageScrolled (int position, float positionOffset, int positionOffsetPixels){ 

       } 

       @Override 
       public void onPageSelected (int position){ 

        if (position == FOLLOWERS){ 
         imgAction.setImageResource (R.drawable.ic_block); 
        } else if (position == FOLLOWING){ 
         imgAction.setImageResource (R.drawable.ic_plus); 
        } else if (position == GROUPS){ 
         imgAction.setImageResource (R.drawable.ic_plus); 
        } 
        updateCustomTabTextView (position); 
       } 

       @Override 
       public void onPageScrollStateChanged (int state){ 

       } 
      }); 
      linearAction.setOnClickListener (new View.OnClickListener(){ 
       @Override 
       public void onClick (View v){ 

        int position = pagerCommunity.getCurrentItem(); 
        if (position == FOLLOWERS){ 
         imgAction.setImageResource (R.drawable.ic_block); 
         ManageFragment.replace (activity, R.id.content_frame, new BlockedUsersFragment(), BlockedUsersFragment.LOGTAG, BlockedUsersFragment.LOGTAG); 

        } else if (position == FOLLOWING){ 
         imgAction.setImageResource (R.drawable.ic_plus); 
         ManageFragment.replace (activity, R.id.content_frame, new FollowingAddFragment(), FollowingAddFragment.LOGTAG, FollowingAddFragment.LOGTAG); 
        } else if (position == GROUPS){ 
         imgAction.setImageResource (R.drawable.ic_plus); 
         ManageFragment.replace (activity, R.id.content_frame, new NewGroupFragment(), NewGroupFragment.LOGTAG, NewGroupFragment.LOGTAG); 
        } 

       } 
      }); 
      setTabLayout(); 
      return view; 
     } 

     private void setTabLayout(){ 
      manager = activity.getSupportFragmentManager(); 
      communityPagerAdapter = new CommunityPagerAdapter (activity, manager); 
      pagerCommunity.setAdapter (communityPagerAdapter); 
      tabAddFriend.setupWithViewPager (pagerCommunity); 
      setCustomTabTextView(); 

      if(!operation.equalsIgnoreCase ("")){ 
       int type=Integer.parseInt (operation); 
       if(type==FOLLOWERS){ 
        imgAction.setImageResource (R.drawable.ic_block); 
       }else if(type==FOLLOWING){ 
        imgAction.setImageResource (R.drawable.ic_plus); 
       } 
       pagerCommunity.setCurrentItem (type); 
      } 
     } 

     public void updateCustomTabTextView (int position){ 
      for (int i = 0; i < tabAddFriend.getTabCount(); i++){ 
       View view = tabAddFriend.getTabAt (i).getCustomView(); 
       CustomTextViewMedium textTabTitle = (CustomTextViewMedium) view.findViewById (R.id.textTabTitle); 
       if (i == position){ 
        textTabTitle.setTextColor (ContextCompat.getColor (activity, R.color.colorDarkGray)); 
       } else{ 
        textTabTitle.setTextColor (ContextCompat.getColor (activity, R.color.colorGray)); 
       } 
      } 
     } 

     private void setCustomTabTextView(){ 
      for (int i = 0; i < tabAddFriend.getTabCount(); i++){ 
       TabLayout.Tab tab = tabAddFriend.getTabAt (i); 
       View view = LayoutInflater.from (activity).inflate (R.layout.layout_add_friend_tab, null); 
       CustomTextViewMedium textTabTitle = (CustomTextViewMedium) view.findViewById (R.id.textTabTitle); 
       textTabTitle.setText (tabList[i]); 
       textTabTitle.setTextSize (12); 
       if (pagerCommunity.getCurrentItem() == i){ 
        textTabTitle.setTextColor (ContextCompat.getColor (activity, R.color.colorDarkGray)); 
       } else{ 
        textTabTitle.setTextColor (ContextCompat.getColor (activity, R.color.colorGray)); 
       } 
       tab.setCustomView (view); 
      } 
     } 
    } 

    **CommunityPagerAdapter.java** 

    import android.app.Activity; 
    import android.support.v4.app.Fragment; 
    import android.support.v4.app.FragmentManager; 
    import android.support.v4.app.FragmentStatePagerAdapter; 

    import com.****.app.R; 
    import com.****.app.fragment.ActivityFragment; 
    import com.****.app.fragment.FollowingFragment; 
    import com.****.app.fragment.GroupFragment; 

    public class CommunityPagerAdapter extends FragmentStatePagerAdapter{ 

     Activity activity; 

     public CommunityPagerAdapter (Activity activity, FragmentManager fm){ 
      super (fm); 
      this.activity = activity; 
     } 

     @Override 
     public Fragment getItem (int position){ 
      switch (position){ 
       case 0: 
        return new ActivityFragment(); 
       case 1: 
        return new FollowingFragment(); 
       case 2: 
        return new GroupFragment(); 
      } 
      return null; 
     } 

     @Override 
     public int getCount(){ 
      return 3; 
     } 

     @Override 
     public CharSequence getPageTitle (int position){ 
      String title = " "; 
      switch (position){ 
       case 0: 
        title = activity.getResources().getString (R.string.followers); 
        break; 
       case 1: 
        title = activity.getResources().getString (R.string.following); 
        break; 
       case 2: 
        title = activity.getResources().getString (R.string.groups); 
        break; 
      } 
      return title; 
     } 

    } 

回答

1

我面對此問題與viewpager,最後,除去片段並再次裝入按照相同的片段 解決的是代碼

FragmentManager fm = getSupportFragmentManager(); 
Fragment f = fm.findFragmentById(R.id.fragments); 
FragmentManager fragmentManager = getSupportFragmentManager(); 
android.support.v4.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 

fragmentTransaction.remove(fragment); // here fragment is 
fragmentTransaction.commit(); 
+0

不,這不是正確的方式 – Mahesh

+1

你也可以使用ViewPagerAdapter adapter = new ViewPagerAdapter(getChildFragmentManager()); –

0

未完成[R面臨什麼對我的作品的問題3天是onCreateView方法檢查,如果列表大小大於零,然後再設置它的適配器

if (list.size() > 0) { 
    viewpager.setAdapter(viewPagerAdapter); 
}