2015-11-30 159 views
1

我的TabLayout和ViewPager出現問題。它沒有顯示任何東西。這裏是我的適配器:ViewPager不顯示任何內容

public class PagerAdapter extends FragmentStatePagerAdapter { 
int mNumOfTabs; 

public PagerAdapter(FragmentManager fm, int mNumOfTabs) { 
    super(fm); 
    this.mNumOfTabs = mNumOfTabs; 
} 

@Override 
public Fragment getItem(int position) { 
    switch (position) { 
     case 0: 
      return ChoiceFragment.newInstance("Mobile Games", 
        R.drawable.ic_stay_current_portrait_white_48dp, "1"); 
     case 1: 
      return ChoiceFragment.newInstance("Computer Games", 
        R.drawable.ic_payment_white_48dp, "5"); 
     default: return ChoiceFragment.newInstance("Mobile Games", 
       R.drawable.ic_stay_current_portrait_white_48dp, "1"); 
    } 
} 

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

@Override 
public CharSequence getPageTitle(int position) { 
    String title; 

    if (position == 0) 
     title = "Mobile"; 
    else 
     title = "Computer"; 

    return title; 
} 

這裏是我的TabFragment類:

public class TabGroupFragment extends Fragment { 



public TabGroupFragment() { 
    // Required empty public constructor 
} 


public static TabGroupFragment newInstance() { 
    TabGroupFragment fragment = new TabGroupFragment(); 
    Bundle args = new Bundle(); 
    fragment.setArguments(args); 
    return fragment; 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    if (getArguments() != null) { 

    } 
} 

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

    TabLayout tabLayout = (TabLayout) view.findViewById(R.id.tab_layout); 
    tabLayout.addTab(tabLayout.newTab().setText("Mobile")); 
    tabLayout.addTab(tabLayout.newTab().setText("Computer")); 
    tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); 

    final ViewPager viewPager = (ViewPager) view.findViewById(R.id.view_pager); 
    final PagerAdapter adapter = new PagerAdapter(
      getActivity().getSupportFragmentManager(), 
      tabLayout.getTabCount()); 
    viewPager.setAdapter(adapter); 
    viewPager.addOnPageChangeListener(
      new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); 
    tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
     @Override 
     public void onTabSelected(TabLayout.Tab tab) { 
      viewPager.setCurrentItem(tab.getPosition()); 
     } 

     @Override 
     public void onTabUnselected(TabLayout.Tab tab) { 

     } 

     @Override 
     public void onTabReselected(TabLayout.Tab tab) { 

     } 
    }); 

    return view; 
    } 

} 

下面是對上面的類佈局:

FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" 
tools:context=".TabGroupFragment"> 

<ScrollView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical"> 

     <android.support.design.widget.TabLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="@color/utility_white" 
      android:elevation="6dp" 
      android:minHeight="?attr/actionBarSize" 
      android:id="@+id/tab_layout" /> 

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

    </LinearLayout> 

</ScrollView> 

我看不出有什麼錯這裏。我只是按照教程。讓我知道這裏發生了什麼。謝謝

+0

'viewPager.setCurrentItem(0)'在哪裏? – Piyush

+1

@PiyushGupta setcurrentItem是沒有必要的。 Menardo,我不確定這是否會解決您的問題,但請嘗試'getChildFragmentManager()'而不是'getActivity()。getSupportFragmentManager()'。 –

+0

Hi @TimMalseed好的。我現在就試試。 – Menardo

回答

1

謝謝@MikeM。這一切現在都奏效了。我刪除了TabLayoutViewPager周圍的LinearLayout,並將FrameLayout更改爲RelativeLayout,他們都出現了。謝謝!

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" 
tools:context=".TabGroupFragment"> 

<android.support.design.widget.TabLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="@color/utility_white" 
    android:elevation="6dp" 
    android:id="@+id/tab_layout" /> 

<android.support.v4.view.ViewPager 
    android:layout_below="@+id/tab_layout" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/view_pager"/> 

</RelativeLayout>