0

以下のコードを使用して、LinearLayout を動的に追加しました。

 public void sendMessage02(View view){
    view.getId();
    EditText editText=(EditText)findViewById(R.id.edit_message);
    String message=editText.getText().toString();

    LinearLayout l=(LinearLayout)findViewById(R.id.layout_odd);
    TextView text=new TextView(this);
    text.setText(message);
    text.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
    l.addView(text);

    LinearLayout l2=(LinearLayout)findViewById(R.id.layout01);
    l2.addView(l);

}

アプリケーションを実行すると、残念ながらアプリケーションが停止したというエラーがエミュレータに表示されます。

私は何を間違っていますか?レイアウトを動的に追加する他の方法はありますか。

4

1 に答える 1

1

この例では、LinearLayoutを挿入しようとはしていません。既存のLinearLayoutの参照を取得します

LinearLayout l=(LinearLayout)findViewById(R.id.layout_odd);

それにTextViewを追加します

 l.addView(text);

動的にLinearLayoutを追加する場合は、ViewGroupの参照を取得し、それに新しいLinearLayoutをアタッチします。

真新しいインスタンスを作成するLinearLayoutを作成できます。

LinearLayout l = new LinearLayout(context);

またはレイアウトリソースからの膨張:

LinearLayour l = getInflater().inflate(R.layout.my_linear_layout);

次に、それをViewGroupに添付します

ViewGroup root = findViewById(R.id.my_view_group);
root.addView( l );
于 2012-07-10T07:38:17.177 に答える