刷新选项卡onTabReselected Android

时间:2014-10-10 14:39:41

标签: android android-fragments webview

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

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

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

}

我尝试过替换代码行,就像在onTabSelected方法中一样,但它似乎没有用。我尝试删除片段,然后替换片段,但这留下了一个空标签。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

分离并重新连接片段最终成为我需要的东西。

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

答案 1 :(得分:0)

在onTabReselected触发时触发onchreView on on Support Support,

    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);
    }