Android: Layout.addView () не работает - PullRequest
3 голосов
/ 16 сентября 2011

Когда я пытаюсь запустить следующий код, я получаю сообщение об ошибке. Эмулятор выдает мне это сообщение об ошибке, а затем приложение закрывается: Приложение неожиданно остановилось. Что не так?

import edu.chl.dat255.bluebanana.R;
import android.app.Activity;
import android.os.Bundle;
import android.widget.LinearLayout;
import android.widget.TextView;

public class ProMan extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        LinearLayout layout = (LinearLayout) findViewById(R.layout.main);

        TextView t = new TextView(getApplicationContext());
        t.setText("Hello world");
        layout.addView(t);
    }
}

Ответы [ 3 ]

7 голосов
/ 16 сентября 2011
  LinearLayout layout = (LinearLayout) findViewById(R.id.mainLayout);

In your xml file main xml layout android:id="@+id/mainLayout" 
2 голосов
/ 16 сентября 2011

Вы должны установить идентификатор для вашего корневого LinearLayout в main.xml как

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

и затем ссылаться на него как

LinearLayout layout = (LinearLayout) findViewById(R.id.mainLayout);

вместо findViewById (R.layout.main);

0 голосов
/ 16 сентября 2011

Вы должны предоставить информацию о расположении в `TextView t.Ширина макета и высота макета должны быть предоставлены.См. Код ниже.

LinearLayout.LayoutParams params = 
    new LinearLayout.LayoutParams( 
       ViewGroup.LayoutParams.WRAP_CONTENT, 
       ViewGroup.LayoutParams.WRAP_CONTENT, 0.0F);
t.setLayoutParams(tvParams);

layout.addView(t);
...