TextView没有在Fragment中显示

时间:2014-10-15 17:59:26

标签: android android-fragments fragment

我有一个Fragment类,由FragmentTabHost调用,它不会显示任何内容。

这是我的ArticulosFragment课程:

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class ArticulosFragment extends Fragment {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        Log.d("App", "asdasdasd");
        return inflater.inflate(R.layout.fragment_articulos, container, false);
    }

}

我在XML文件中有一个简单的TextView:

<?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" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Articulos"
        android:textAppearance="?android:attr/textAppearanceLarge" />

</LinearLayout>

当我运行应用时,添加的日志显示正确,但文字 Articulos 却没有。

编辑:这是我的TabHost类,它显示(或应显示)ArticulosFragment类:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    tabHost = (FragmentTabHost) findViewById(android.R.id.tabhost);
    tabHost.setup(this, getSupportFragmentManager(),
            android.R.id.tabcontent);

    inicializarTabs();

}

public void inicializarTabs() {

    TabHost.TabSpec spec = tabHost.newTabSpec("Articulos");
    spec.setContent(new TabContentFactory() {

        @Override
        public View createTabContent(String tag) {
            // TODO Auto-generated method stub
            return findViewById(R.id.realtabcontent);
        }
    });
    spec.setIndicator("Articulos");
    tabHost.addTab(spec, ArticulosFragment.class, null);


}

2 个答案:

答案 0 :(得分:0)

可能导致的两件事:

  1. 检查容器来自视图
  2. 是否为空
  3. 检查显示片段的片段代码
  4. 尝试从Fragment中删除onCreate方法

答案 1 :(得分:0)

<强> TabContentFactory

  

选中标签时的内容。如果您的标签使用此选项   需要按需创建内容,即您没有显示内容   现有观点或开始活动。

请注意这一行:

您没有显示现有视图或开始活动。

public abstract View createTabContent (String tag)

Callback to make the tab contents
Parameters
tag     Which tab was selected.
Returns

    The view to display the contents of the selected tab. 

因为你有一个片段,它已经有了一个你不需要createTabContent的视图,而有趣的部分是:

https://github.com/android/platform_frameworks_support/blob/master/v13/java/android/support/v13/app/FragmentTabHost.java#L219

如您所见,fragmentTabHost会覆盖您的TabContentFactory

无论如何你的问题是:

tabHost.setup(this, getSupportFragmentManager(),android.R.id.tabcontent);

将其更改为:

tabHost.setup(this, getSupportFragmentManager(),R.id.realtabcontent);