2017-12-10 16 views
0

私のViewPagerは、「レビューセクション」のフラグメントをロードしてもフラグメントを表示しません。私は「評価セクション」と同じコードを使用していましたが、ViewPagerとアダプタをやり直してみましたが、まだ進歩はありませんでした。ところで、私はフラグメント内でこれをやっています。ViewPagerでフラグメントが表示されない

フラグメントが機能しているかどうかを表示するためにアダプタにログを記録し、Viewpagerの背景色を変更して表示するかどうかを確認します。 ViewPagerは表示されますが、フラグメントはまだ表示されません。

更新:私は、この問題を原因として、そのフラグメントで置き換えるために使用することがわかりました。 "評価セクション" と "審査課" の両方を保持し、私の活動でここ

コードスニペット(。

SubSectionFragment_Rating subSectionFragment_rating = new SubSectionFragment_Rating(); 
    manager = getSupportFragmentManager(); 
    manager.beginTransaction().replace(R.id.ratingSection,subSectionFragment_rating, subSectionFragment_rating.getTag()).commit(); 

    SubSectionFragment_ReviewAndInstructions subSectionFragment = new SubSectionFragment_ReviewAndInstructions(); 
    manager = getSupportFragmentManager(); 
    manager.beginTransaction().replace(R.id.subTab,subSectionFragment, subSectionFragment.getTag()).commit(); 

ViewPager is visible

Should display this fragment in ViewPager

Review.xml

<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" 
tools:context="com.hybridelements.openchef.fragment_activities.fragment_subs.SubSectionFragment_ReviewAndInstructions"> 

<RelativeLayout 
    android:id="@+id/main_layout" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".MainActivity"> 

    <android.support.design.widget.TabLayout 
     android:id="@+id/tab_layout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="?attr/colorPrimary" 
     android:elevation="6dp" 
     android:minHeight="?attr/actionBarSize" 
     android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/> 

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

</RelativeLayout> 

Review.java(コードの一部)

viewPager = (ViewPager) rootView.findViewById(R.id.pager); 
    final SubPagerAdapter_ReviewAndInstructions adapter = new SubPagerAdapter_ReviewAndInstructions(getActivity().getSupportFragmentManager(), tabLayout.getTabCount()); 
    viewPager.setAdapter(adapter); 
    viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); 

SubPagerAdapter_ReviewAndInstructions.java

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

@Override 
public Fragment getItem(int position) { 
    switch (position){ 
     case 0: 
      ReviewsFragment subTab1 = new ReviewsFragment(); 
      Log.d("ReviewAndInstruction","ReviewsFragment loaded"); 
      return subTab1; 
     default: 
      return null; 
    } 

} 

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

あなたはフラグメントのOnCreateView方法でrootviewを返されたことを確認してください。 –

+0

すべてのOnCreateViewメソッドがrootViewを返すことを確認しました。それでもまだ修正されていません –

+0

'getChildFragmentManager()'を次のように試してください: 'final SubPagerAdapter_ReviewAndInstructions adapter = new SubPagerAdapter_ReviewAndInstructions(getChildFragmentManager()、tabLayout.getTabCount());' – Yupi

答えて

0

問題解決のおかげでgetActivity().getSupportFragmentManager()からgetChildFragment()に変更する提案ため@Yupiします。 getChildFragment()への変更がエラーを得たときに問題の際、発生した

のjava.lang.NullPointerException:nullオブジェクトに「java.lang.Objectのandroid.util.SparseArray.get(int)を」仮想メソッドを呼び出すための試み参照

このエラーを修正するには、フラグメントトランザクションを開始するアクティビティを変更する必要があります。ここでは、ネストされたフラグメントの問題の解決方法を示します。

ViewItem.Java

FragmentManager manager; 

manager = getSupportFragmentManager(); 

ViewItem.Java( AFTER )( BEFORE)

FragmentTransaction manager; 

manager = getSupportFragmentManager().beginTransaction(); 

SubPagerFragment_ReviewAndInstructions.java( BEFORE

SubPagerFragment_ReviewAndInstructions。JAVA( AFTER

final SubPagerAdapter_ReviewAndInstructions adapter = new SubPagerAdapter_ReviewAndInstructions(getChildFragmentManager(), tabLayout.getTabCount()); 

結果

Fragment correctly displayed

関連する問題