Ошибка перехода из режима макета из портретного в ландшафтный режим - PullRequest
0 голосов
/ 29 июня 2011

Я получаю сообщение об ошибке при изменении режима макета при изменении режима макета в 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 голосов
/ 29 июня 2011

Я подозреваю, что проблема в том, что ваше представление chart сохраняется дольше, чем ваша активность, и поэтому добавляется к родителю несколько раз, но не удаляется при уничтожении родителя.Трудно быть уверенным, не видя больше вашего кода.

Вы можете попробовать добавить метод onDestroy(), который удаляет его:

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

В качестве альтернативы, вы можете попробовать создать новый chart в onCreate().

...