Андроид: Макет.addView () не работает


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

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 3

3 ответа:

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

In your xml file main xml layout android:id="@+id/mainLayout" 

Вы должны установить id для вашего корневого 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);

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

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

layout.addView(t);