134

TextViewsコードで xml 定義のレイアウトに追加しようとしています。多くのViewsものが定義されているxmlシートがあります。LinearLayoutただし、コードにいくつかのビューを追加する必要があるため、xml-sheet にa を作成します。

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:id="@+id/info"
android:layout_height="wrap_content" 
android:orientation="vertical">
</LinearLayout>

そして、このレイアウトでは、次のように追加したいと思いTextViewます:

    View linearLayout =  findViewById(R.id.info);
    //LinearLayout layout = (LinearLayout) findViewById(R.id.info);


    TextView valueTV = new TextView(this);
    valueTV.setText("hallo hallo");
    valueTV.setId(5);
    valueTV.setLayoutParams(new LayoutParams(
            LayoutParams.FILL_PARENT,
            LayoutParams.WRAP_CONTENT));

    ((LinearLayout) linearLayout).addView(valueTV);

しかし、次のエラーメッセージしか表示されません。

: java.lang.ClassCastException: android.widget.TextView

どうすればいいですか?

助けてくれてありがとう。マーティン

4

9 に答える 9

109

使ってみて

LinearLayout linearLayout = (LinearLayout)findViewById(R.id.info);
...
linearLayout.addView(valueTV);

また、作成しているレイアウト パラメータが LinearLayout.LayoutParams... であることを確認してください。

于 2010-07-08T15:36:08.173 に答える
75

コードを確認しましたが、コードに重大なエラーはありません。これは完全なコードです:

main.xml:-

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

これは Stackoverflow.java です

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.LinearLayout;
import android.widget.TextView;

public class Stackoverflow extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        View linearLayout =  findViewById(R.id.info);
        //LinearLayout layout = (LinearLayout) findViewById(R.id.info);

        TextView valueTV = new TextView(this);
        valueTV.setText("hallo hallo");
        valueTV.setId(5);
        valueTV.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT));

        ((LinearLayout) linearLayout).addView(valueTV);
    }
}

このコードをコピーして実行します。それは完全にエラーフリーです。気を付けて...

于 2011-09-16T13:09:39.667 に答える
22

TextView次のようにプログラムで線形レイアウトに を追加できます。

LinearLayout linearLayout = (LinearLayout) findViewById(R.id.mylayout);
TextView txt1 = new TextView(MyClass.this);
linearLayout.setBackgroundColor(Color.TRANSPARENT);
linearLayout.addView(txt1);
于 2012-02-09T14:01:21.803 に答える
3

一意であることが保証されていないidリソースではなく、レイアウトリソースを介してレイアウトにアクセスする必要があります。リソース参照は、上記の XML レイアウトが res/layout/my_cool_layout.xml に保存されている R.layout.my_cool_layout のようになります。

于 2011-04-09T10:56:57.953 に答える
0
LinearLayout.LayoutParams layoutParams ;
layoutParams= new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
于 2013-08-23T22:42:34.407 に答える