从工具栏按下后,Viewpager将无法正常工作

问题描述:

我试图将标题尽可能地短语,但基本上在HomeActivity内部,我有一个用于片段的自定义菜单。其中之一是HomeFragment其中包含Tablelayout的2个选项卡与viewpager ..!从工具栏按下后,Viewpager将无法正常工作

一切工作正常。但在菜单片段中,当用户单击工具栏上的后退按钮时,将返回到HomeFragment。 一个片段替换方法将做的伎俩,我已经用它来代替之间的片段从菜单中选择!

但是在这种情况下,HomeFragment尚未打开Tablayout未响应!感觉就像片段没有正确创建!?

我尝试使用默认情况下打开HomeFragment的同一活动的新意图,并打开它,但具有相同的问题。


的问题

enter image description here


守则

HomeFragment

// code.. 

    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, 
     Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.fragment_home, container, false); 
    InitViews(rootView); 

    TabLayoutAdapter adapter = new TabLayoutAdapter(getFragmentManager()); 
    pager.setAdapter(adapter); 
    tabLayout.setupWithViewPager(pager); 


    return rootView; 
    } 

// code.. 

菜单片段

// code.. 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case R.id.to_home: 

    replaceFragment(new HomeFragment()); 

     // tried this and it's the same problem 
     // startActivity(new Intent(getActivity(), HomeActivity.class).setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY)); 
     return true; 
     default: 
     return super.onOptionsItemSelected(item); 
    } 
    } 

    public void replaceFragment(Fragment fragment) { 
    android.support.v4.app.FragmentTransaction t = getFragmentManager().beginTransaction(); 
    t.replace(R.id.Container, fragment); 
    t.commit(); 
    } 

    // code.. 

看着我认为你必须使用getChildFragmentManager(代码),而不是getFragmentManager(),并将其用于片段事务。

getChildFragmentManager()的定义是: 返回一个专用的FragmentManager,用于放置和管理这个Fragment中的Fragments。

getFragmentManager()的定义是: 返回FragmentManager以与与此片段的活动关联的片段进行交互。

更换由getChildFragmentManager有getFragmentManager()()这行代码

TabLayoutAdapter adapter = new TabLayoutAdapter(getChildFragmentManager()); 

另外在菜单片段

android.support.v4.app.FragmentTransaction t = getChildFragmentManager().beginTransaction(); 
+0

它给我'java.lang.IllegalArgumentException异常:未找到ID视图0x7f0d008a(XXX.XXXX:id /容器)的片段GamesFragment {2b77c84#2 id = 0x7f0d008a}' –

+0

GamesFragment在哪里? – Anonymous

+0

这是菜单片段..!它的代码张贴在问题中!你为什么认为这个错误显示。 –