我想以編程方式添加到LinearLayout
某些TextViews
。我想用LayoutInflater
。我在我的活動佈局的xml文件:添加TextView到LinearLayout時的ClassCastException
<LinearLayout
android:id="@+id/linear_layout"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:orientation="vertical"
/>
我已經寫在這樣下面的活動代碼。
LinearLayout linearLayout = (LinearLayout) findViewById(R.id.linear_layout);
LayoutInflater inflater = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
TextView textView = (TextView) inflater.inflate(R.layout.scale, linearLayout, true);
textView.setText("Some text");
linearLayout.addView(textView);
我scale.xml
文件看起來像:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginLeft="50dp"
android:layout_marginRight="50dp"
android:drawableTop="@drawable/unit"
/>
在生產線TextView textView = (TextView) inflater.inflate(R.layout.scale, linearLayout, true);
我有致命的異常這樣的下面。
java.lang.RuntimeException: Unable to start activity ComponentInfo{my.package/my.package.MyActivity}:
java.lang.ClassCastException: android.widget.LinearLayout
Caused by: java.lang.ClassCastException: android.widget.LinearLayout
當我有問題的行linearLayout
與空代替我沒有任何異常,但是從我的scale.xml
和android:layout_marginLeft
android:layout_marginRight
被忽略,我看不到任何利潤增加周圍TextView的。
我發現問題Android: ClassCastException when adding a header view to ExpandableListView但在我的情況下,我在使用充氣器的第一行中有例外。
謝謝檢索你,但我不明白。我的'LinearLayout'在佈局文件中沒有任何子視圖。如何在這種情況下使用'getChildAt'方法?當我嘗試使用帶有LinearLayout的'inflater.inflate()'作爲我的'ViewGroup'時,我有個例外。當我使用'null'作爲'ViewGroup'時,我的應用程序可以工作,但在這種情況下,我再次無法使用'getChildAt'方法。 – woyaru 2012-03-11 21:26:22
@woyaru - 在'inflater.inflate'返回之後,膨脹的'TextView'將被添加到'linearLayout'中。異常即將到來是因爲當它實際上返回'linearLayout'本身時,您試圖將返回值轉換爲'TextView'。 ('inflater.inflate'只有在根視圖爲'null'的情況下才返回虛擬視圖,如果不是'null',則返回根視圖,而不是虛擬視圖。) – 2012-03-11 21:31:11
非常感謝! – woyaru 2012-03-11 21:34:02