0

私はアプリケーション内にスライダーメニューを持っています。メニュー内の項目をクリックすると、対応するフラグメントが表示されます。そのフラグメントには、タブレイアウトとビューページがあります。フラグメントのXMLは、与えられた以下Androidビューのページャーが表示されないもう一度呼び出されたときにフラグメント

<android.support.design.widget.TabLayout 
     android:id="@+id/tabs" 
     android:layout_width="match_parent" 
     android:background="@color/colorPrimary" 
     app:tabSelectedTextColor="@color/textColorPrimary" 
     app:tabTextColor="@color/colorAccent" 
     android:layout_height="wrap_content" 
     app:tabMode="fixed" 
     app:tabGravity="fill"/> 
    <android.support.v4.view.ViewPager 
     android:id="@+id/viewpager" 
     android:layout_below="@+id/tabs" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior"/> 

以下の通りである上記のフラグメント内の3つのタブがあり、スライダーメニュー

public class MyCoursesFragment extends Fragment { 
    private TabLayout tabLayout; 
    private ViewPager viewPager; 

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

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


    } 

    private void setupViewPager(ViewPager viewPager) { 
     ViewPagerAdapter adapter = new ViewPagerAdapter(getFragmentManager()); 
     adapter.addFragment(new ScheduledFragment(), "SCHEDULED"); 
     adapter.addFragment(new LiveStreamingFragment(), "LIVE STREAMING"); 
     adapter.addFragment(new UpcomingFragment(), "UPCOMING"); 
     viewPager.setAdapter(adapter); 
    } 

    class ViewPagerAdapter extends FragmentPagerAdapter { 
     private final List<Fragment> mFragmentList = new ArrayList<>(); 
     private final List<String> mFragmentTitleList = new ArrayList<>(); 

     public ViewPagerAdapter(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); 
     } 
    } 


    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     Log.d("mlearning", "inside my course"); 
     View rootView = inflater.inflate(R.layout.fragement_courses, container, false); 
     viewPager = (ViewPager) rootView.findViewById(R.id.viewpager); 
     setupViewPager(viewPager); 

     tabLayout = (TabLayout) rootView.findViewById(R.id.tabs); 
     tabLayout.setupWithViewPager(viewPager); 

     return rootView; 
    } 

    @Override 
    public void onAttach(Activity activity) { 
     super.onAttach(activity); 
    } 

    @Override 
    public void onDetach() { 
     super.onDetach(); 
    } 
} 

をクリックしたフラグメントのコードスニペットです。各フラグメントのxmlにはリストビューが含まれ、xmlは以下のとおりです。 tablayoutフラグメントのためのコードは以下の通りです

<ListView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/lvList" 
     android:paddingLeft="10dp" 
     android:paddingTop="10dp" 
     android:backgroundTint="#888686" /> 

public class ScheduledFragment extends Fragment { 

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

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


} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    Log.d("mlearning", "inside scheduled"); 
    View rootView = inflater.inflate(R.layout.fragment_scheduled, container, false); 
    ArrayList<CoursePojo> searchResults = GetSearchResults(); 

    final ListView lv1 = (ListView) rootView.findViewById(R.id.lvList2); 
    lv1.setAdapter(new MyCustomCourseList(getActivity(), searchResults)); 

    lv1.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> a, View v, int position, long id) { 
      Object o = lv1.getItemAtPosition(position); 
      CoursePojo fullObject = (CoursePojo) o; 
      //Toast.makeText(getBaseContext(), "You have chosen: " + " " + fullObject.getId(), Toast.LENGTH_LONG).show(); 


     } 
    }); 
    return rootView; 

} 
private ArrayList<CoursePojo> GetSearchResults(){ 
    ArrayList<CoursePojo> results = new ArrayList<CoursePojo>();CoursePojo coursePojo3=new CoursePojo(); 
    coursePojo3.setName("Android"); 
    coursePojo3.setDesc("First os was released without a phone "); 
    coursePojo3.setStartdate("20 Mar"); 
    coursePojo3.setEndDate("8 Apr"); 
    coursePojo3.setProgress("40"); 
    results.add(coursePojo3); 




    // Inflate the layout for this fragment 
    return results; 
} 

@Override 
public void onAttach(Activity activity) { 
    super.onAttach(activity); 
} 

@Override 
public void onDetach() { 
    super.onDetach(); 
}} 

私はメニューフラグメントをクリックしたとき、それがコードに記載されているよう最初に、タブフラグメントの値が付属しています。しかし、メニューのスライダーをもう一度タップすると、タブレイアウトの項目が表示されません。また、いくつかのタブが空になったり、いくつかのタブがいくつかの値を持っています。どこが間違っていますか?

+0

)(onResume内部リスト内のデータを移入してください。このコード行を試してください.ViewPagerAdapterアダプタ=新しいViewPagerAdapter(getChildFragmentManager()); –

答えて

1

FragmentPagerAdapterのFragmentStatePagerAdapterインスタントを使用します。

+0

sanjayありがとうございました – Krishna

+0

同じコードでもう一度同じ問題が発生しました – Krishna

+0

何か変更が必要です。さもなければその働く権利? –

0

あなたがgetChildFragmentManager()を呼び出しフラグメント内のフラグメントを使用している

関連する問題