android - 使用 fragment 时不显示选项卡内容

标签 android tabs android-fragments

我正在尝试使用 fragment 创建一个可滚动的标签。

选项卡也在显示和滚动。但问题是标签内容没有显示。 我正在使用 fragment 来显示内容。我是这个主题的新手: fragment 。我是否遗漏了这段代码中的任何内容?

请帮帮我。

public class SrollableTab extends Activity
{
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        ActionBar bar = getActionBar();
        bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        bar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE);
        bar.addTab(createTab("Tab 1"));
        bar.addTab(createTab("Tab 2"));
        bar.addTab(createTab("Tab 3"));
        bar.addTab(createTab("Tab 4"));
        bar.addTab(createTab("Tab 5"));
        bar.addTab(createTab("Tab 6"));

        if (savedInstanceState != null) {
            bar.setSelectedNavigationItem(savedInstanceState.getInt("tab", 0));
        }
    }

    public Tab createTab(String tabTitle)
    {
        ActionBar bar = getActionBar();     
        Tab tab = bar.newTab().setText(tabTitle).setTabListener(new TabFragment());
        return tab;
    }

    class TabFragment extends Fragment implements TabListener
    {

        @Override
        public void onCreate(Bundle fragmentState)
        {
            super.onCreate(fragmentState);              
        }
        @Override
        public View onCreateView(LayoutInflater inflator, ViewGroup container, Bundle savedState)
        {       
            View view = inflator.inflate(R.layout.tab_content, container, false);
            TextView t = (TextView)view.findViewById(R.id.txtTab);
            t.setText("tab content");   
            return view;

        }
        @Override
        public void onActivityCreated(Bundle savedState)
        {
            super.onActivityCreated(savedState);
        }

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

        }

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

        }

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

        }   
    }
}

tab_content.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="#ffffff" >

    <TextView android:id="@+id/txtTab" 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:text="hello"  
        android:textColor="#ff0000"/>
</LinearLayout>

最佳答案

这可能是旧的,但我找到了自己的解决方案。

我用过 PagerSlidingTabStrip一段时间,直到我开始使用新 Material TabLayout .两者都适用于 Activity,但不适用于 Fragments。这是一些讨论about the bug on fragments.

我想出的解决方法是,在设置 viewpager 的适配器(通常使用 FragmentPagerAdapter 扩展)时,它的构造函数参数需要 FragmentManager,而不是使用 Activity 的 FragmentManager,而是使用 fragment 的 getChildFragmentManager() .

那就修好了。 Android 的 bug 仍然让我烦恼。

干杯

关于android - 使用 fragment 时不显示选项卡内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12455761/

相关文章:

javascript - Electron 标签意外地将所有标签源加载到同一个标签中

java - Android:从 newInstance 传递 Extra 到 onCreate

android - 页面查看器不在 View 之间滑动

android - 获取 PhoneGap 中 Assets 文件夹的绝对路径

java - 如何从代码(屏幕锁定)锁定安卓按钮/手机?

具有拖放重新排序功能的 Javascript 选项卡小部件

tabs - 如何在 AWK 中指定 *one* 选项卡作为字段分隔符?

android - YouTube 安卓 API : YouTubePlayerFragment loading spinner

android - 如何将 bzr revid 放入 list 的 Android :versionName

应用程序在 Play 商店中上线后,Android 应用程序链接不起作用