以编程方式将视图添加到Fragment Activity不起作用

时间:2011-07-28 02:28:22

标签: android android-layout

我有一个扩展FragmentActivity的Activity(它最初扩展了Activity但是我改变了它 - 原因并不重要,但我把它包括在内,以防它有助于追踪问题)。它显示的一些信息因特定变量而异,因此我在activity的layout xml中有一个LinearLayout来保存这些信息,并以编程方式从该类中添加它。这曾经工作得很好,但现在已经停止工作,我看不出任何理由。

以下是该文件的摘录:

public class FriendProfile extends FragmentActivity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.friendprofile);

        Intent intent = getIntent();
        userData = (ArrayList<String>)intent.getSerializableExtra("userData");
        String status = userData.get(4).trim();

        LinearLayout extras = (LinearLayout)findViewById(R.id.friendextra);
        LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

        if(status.equals("requester")) {
            Log.v(TAG, "requester");
            TextView view = new TextView(this);
            view.setText(R.string.requestpending);
            view.setLayoutParams(params);
            view.setGravity(Gravity.CENTER);
            extras.addView(view);
        }
    }
}

摘自friendprofile.xml文件:

<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/friendextra"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
        android:gravity="center"  
        android:orientation="vertical" >
    </LinearLayout>

logcat没有显示任何有趣的内容 - 它肯定会进入if块,因为日志会打印'requester',但textview不会显示。状态可以采用多个值,每个值都会为布局添加不同的组件,但都不起作用。应用程序不会崩溃或任何事情,它只是不显示组件。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

我终于找到了问题的根源 - 在friendprofile.xml文件中有一个关于LinearLayout的TableLayout,其高度设置为fill_parent。 LinearLayout正在更新,但已关闭屏幕。我将TableLayout的高度更改为wrap_content,这解决了问题的一半。

我仍然无法显示文本,因此我在LinearLayout中放置了一个空文本视图,只是以编程方式设置文本,这样就可以了。