2014-10-10 125 views
1

我有一个选项卡式的片段应用程序,实际上加载了一个webview。在任何给定的选项卡中,您可以导航到更多链接。基本上,当该标签是重新选择,我想webview回到原来的webview网址。我试过使用onTabReselected方法,但还没有成功。刷新选项卡onTabReselected Android

@Override 
public void onTabSelected(Tab tab, FragmentTransaction ft) { 
    ft.replace(R.id.fragment_container, fragment); 
} 

@Override 
public void onTabReselected(Tab tab, FragmentTransaction ft) {  

} 

我试过这种替换代码行,就像在onTabSelected方法,但它似乎并没有工作。我尝试删除片段,然后替换片段,但这留下了一个空的选项卡。任何帮助将非常感激。

回答

1

分离和重新连接片段,最终成为我所需要的。

@Override 
public void onTabReselected(Tab tab, FragmentTransaction ft) {  
    ft.detach(fragment); 
    ft.attach(fragment); 
} 
+0

不适用于android.support.v4.app.Fragment – khunshan 2015-03-03 17:38:38

0

要触发支持库V4标签的onCreateView时onTabReselected触发,

public void onTabReselected(TabLayout.Tab tab) { 
      // specify tab position (optional) 
      if (tab.getPosition()==0){ 
       // get adapter 
       CustomViewPagerAdapter adapter = 
        ((CustomViewPagerAdapter) viewPager.getAdapter()); 

       // get fragment 
       android.support.v4.app.Fragment fragment = 
        adapter.getRegisteredFragment(tab.getPosition()); 

       getSupportFragmentManager() 
        .beginTransaction() 
        .detach(fragment) 
        .attach(fragment) 
        .commit(); 
      } 

     } 

registeredFragments变量简单地持有片断实例中CustomFragmentPagerAdapter类。

@Override 
    public Object instantiateItem(ViewGroup container, int position) { 
     Fragment fragment = (Fragment) super.instantiateItem(container, position); 
     registeredFragments.put(position, fragment); 
     return fragment; 
    } 
    @Override 
    public void destroyItem(ViewGroup container, int position, Object object) { 
     registeredFragments.remove(position); 
     super.destroyItem(container, position, object); 
    } 
    public Fragment getRegisteredFragment(int position) { 
     return registeredFragments.get(position); 
    }