2 znl 12 znl_12 于 2013.05.13 17:16 提问

Fragment tab 内容不能显示

我使用俩个 fragments 创建了程序。这俩个 fragment 可以互相切换。代码编译和运行都没有问题,俩个 tabs 都能显示出来,也可以互相切换,但是 tabs 没有内容。我觉得是 fragments 的问题,然后设置 setcontentview。为什么 HoloEverywhere 和ActionbarSherlock 里 tab 的内容显示不出来?

main activity:

import java.util.ArrayList;

import org.holoeverywhere.app.Activity;
import org.holoeverywhere.widget.TextView;
import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.app.ActionBar.Tab;
import com.actionbarsherlock.app.SherlockActivity;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.view.ViewPager;
import android.view.WindowManager;

public class SwipeTabsMainActivity extends Activity {
ViewPager mViewPager;
TabsAdapter mTabsAdapter;
TextView tabCenter;
TextView tabText;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);

    mViewPager = new ViewPager(this);
    mViewPager.setId(R.id.pager);

    setContentView(mViewPager);
    ActionBar bar = getSupportActionBar();
    bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
    bar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE);

    mTabsAdapter = new TabsAdapter(this, mViewPager);

        mTabsAdapter.addTab(bar.newTab().setText("Stopwatch"),StopWatchFragment.class, null);
    mTabsAdapter.addTab(bar.newTab().setText("Timer"), CountdownFragment.class, null);
}
public static class TabsAdapter extends FragmentPagerAdapter implements
        ActionBar.TabListener, ViewPager.OnPageChangeListener {
    private final Context mContext;
    private final ActionBar mActionBar;
    private final ViewPager mViewPager;
    private final ArrayList<TabInfo> mTabs = new ArrayList<TabInfo>();

    static final class TabInfo {
        private final Class<?> clss;
        private final Bundle args;

        TabInfo(Class<?> _class, Bundle _args) {
            clss = _class;
            args = _args;
        }
    }
    public TabsAdapter(Activity activity, ViewPager pager) {
        super(activity.getSupportFragmentManager());
        mContext = activity;
        mActionBar = activity.getSupportActionBar();
        mViewPager = pager;
        mViewPager.setAdapter(this);
        mViewPager.setOnPageChangeListener(this);
    }
    public void addTab(ActionBar.Tab tab, Class<?> clss, Bundle args) {
        TabInfo info = new TabInfo(clss, args);
        tab.setTag(info);
        tab.setTabListener(this);
        mTabs.add(info);
        mActionBar.addTab(tab);
        notifyDataSetChanged();
    }
    @Override
    public int getCount() {
        return mTabs.size();
    }
    @Override
    public Fragment getItem(int position) {
        TabInfo info = mTabs.get(position);
        return Fragment.instantiate(mContext, info.clss.getName(),
                info.args);
    }
    @Override
    public void onPageScrolled(int position, float positionOffset,
            int positionOffsetPixels) {
    }
    @Override
    public void onPageSelected(int position) {
        mActionBar.setSelectedNavigationItem(position);
    }
    @Override
    public void onPageScrollStateChanged(int state) {
    }
    @Override
    public void onTabSelected(Tab tab, FragmentTransaction ft) {
        Object tag = tab.getTag();
        for (int i = 0; i < mTabs.size(); i++) {
            if (mTabs.get(i) == tag) {
                mViewPager.setCurrentItem(i);
            }
        }
    }
    @Override
    public void onTabUnselected(Tab tab, FragmentTransaction ft) {
    }
    @Override
    public void onTabReselected(Tab tab, FragmentTransaction ft) {
    }
}
}

Main Activity's xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.view.ViewPager  xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/pager"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_weight="1" />

1个回答

lyyybz
lyyybz   Rxr 2016.08.19 10:42

请问你的问题解决了么,我碰到和你一样的问题!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Android FragmentTabhost内容Fragment不显示等Bug解决方案
Android FragmentTabhost内容Fragment不显示等Bug解决方案 本来是想做个选项卡+多页面切换的,参考了晚上N多的文章,代码写完了,发现很多问题,很蛋疼的偶然的把Bug解决了,以下是bug汇总。 BUG描述 原理解析 解决方案 指示器显示了,但是Fragment不显示 应该是因为FragmentTabhost实现中,需要通过id获得用来填充内容的fram
Fragment里面的Viewpaper不显示内容不执行getItem的解决方案
最近fragment越来越火了,ViewPager也越来越广泛使用了,群里很多朋友就不约而同的遇到了一个奇葩的问题,fragment里面放viewpager有些时候会不会出现内容。所以今天把这个解决方案分享一下,希望大家能看到,不要浪费太多时间在这个问题上。 其实后来看到有人说是fragment里面嵌套fragment导致的。 这个问题我当初遇到的时候花了三个晚上才找到解决方案,纳入我的疑难杂
在Fragment中使用TabLayout,TabLayout不能正常显示的问题。
在Fragment中使用TabLayout,TabLayout不能正常显示的问题。 方法一: mTabLayout.post(new Runnable() { @Override public void run() { mTabLayout.setupWithViewPager(mViewPager); } }); 方法二: if (ViewCompat.isLaidOut(mTabLayout)) { mTabLayout.setupWithViewPager(mViewPager); } else {
TabLayout配合ViewPager和fragment实现既能点击又能左右滑动的效果
TabLayout的使用,TabLayout配合ViewPager和fragment实现既能点击又能左右滑动的效果
tabFragment切换避免页面重叠
viewpager+fragment也可以实现切换fragment,但是这次使用的是一个FrameLayout去切换不同的fragment 采用的是add hide的办法去隐藏fragment和显示fragment,使用replace方法是销毁上一个fragment,去加载另一个fragment,这种方法google都不是推荐的 用replace容易出现页面重叠的问题,而且我们去切换f
使用Framelayout+Fragment+tab方式展示首页时,个别fragment有时会出现空白情况的解决
给领导演示应用的时候,某个fragment突然空白了,这就尴尬了把fragment从v4包一个一个换成了sdk包下的,也不行,又重新过了一遍fragment的hide和show逻辑,没毛病。在生命周期方法里打了log,也正确调用了,但还是偶尔一片空白,是不是inflate layout文件有问题嘞?
fragmenttabhost与drawerlayout一起使用,fragment的主内容显示不出来,tab跑到上面去了
布局如下:       xmlns:android="http://schemas.android.com/apk/res/android"     android:id="@+id/drawer_layout"     android:layout_width="match_parent"     android:layout_height="match_parent">     
fragment viewpager和tablayout相互嵌套内容不显示和组件不显示问题
1.在ViewPagerAdapter中 fragment是如何查找和关联的呢,:点进super(fragmentManager) 看instantiateItem方法看如图: getItemId其实就是他的位置,makeFragmentName返回的是containerID和position组合的字符窜,方法如下: 而mFragmentManager不是getFrag
Fragment的Tab加载方式
原文出处: 博客地址:http://ownwell.github.io/2016/04/22/fragment-tab-host/ 前言现在google已经在新的APP UI规范中开始提倡使用底部导航栏(BottomNavigation),而不是以前的侧拉导航栏(NavigationView)。BottomNavigation分为底部的Tab导航栏和上面的内容展示部分,对于实现上,每个Tab对
关于在Fragment中使用多组ViewPager+TabLayout出现的部分Fragment不显示问题
在编写程序中我遇到了一个问题就是在第一组ViewPager+TabLayout显示正常,但是点击第二组ViewPager+TabLayout的时候出现Fragment什么都不显示。原因是我在创建ViewPagerAdapter时用的是getFragmentManager();正确的是区别 getFragmentManager(); 作用在Activity。 getChildFragmentM