将布局模式从纵向模式更改为横向模式时出错

时间:2011-06-29 11:52:10

标签: android-layout

我在更改布局模式时遇到了错误,改变了android中的布局模式。

我的活动在这里有一个onCreate代码..

            LayoutInflater inflater = (LayoutInflater) this
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View v=inflater.inflate(R.layout.layout_chart_area, null);
    LinearLayout l = (LinearLayout) v.findViewById(R.id.chart_area);
    TextView textTitle = (TextView) v.findViewById(R.id.text_title_chart_area);
    textTitle.setText(titleChart);
    View i = chart;
    if (chart instanceof ImageView) {
        l.addView(i, new LayoutParams(LayoutParams.WRAP_CONTENT,
                LayoutParams.FILL_PARENT));
    } else {
        l.addView(i);
    }
    setContentView(v);

我已经夸大了它,我已经尝试直接使用setContentView但结果相同它在代码下面返回错误:

          06-29 11:23:22.413: ERROR/AndroidRuntime(8182): Caused by:  java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.

我的xml布局在这里:

       <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="fill_parent"
    android:background="@drawable/back" android:orientation="vertical">
    <TextView android:layout_width="fill_parent"
        android:layout_margin="10dip" android:layout_height="wrap_content"
        android:textColor="#000000" android:text="Judul dari Chart yang akan ditampilkan"
        android:id="@+id/text_title_chart_area" android:gravity="center_horizontal"></TextView>
    <LinearLayout android:layout_height="wrap_content"
        android:orientation="vertical" android:layout_width="fill_parent"
        android:id="@+id/chart_area"> 
    </LinearLayout>
</LinearLayout>

1 个答案:

答案 0 :(得分:0)

我怀疑问题是您的chart视图持续的时间比您的活动长,因此被多次添加到父级而不会在父级被销毁时被删除。如果没有看到更多的代码,很难确定。

您可以尝试添加删除它的onDestroy()方法:

@Override
void onDestroy()
{
    ((LinearLayout)findViewById(R.id.chart_area)).removeView( chart );
}

或者,您可以尝试在chart中实例化新的onCreate()