Показать сообщение отдельно
Старый 05.07.2016, 23:19   #1
MotoMustanger
Нуждающийся
 
Регистрация: 13.11.2006
Сообщений: 60
Написано одно полезное сообщение
Динамическое создание кнопок в LinearLayout

Пишу игрушку на Android, которая считывает количество уровней из файла и динамически создает соответсвенное им количество кнопок. Вот файл активити:
package com.CT;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.Toast;

public class LevelsActivity extends Activity {
	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		LinearLayout dynamicview = (LinearLayout)findViewById(R.layout.levels);
		 LinearLayout.LayoutParams lprams = new LinearLayout.LayoutParams(
	             LinearLayout.LayoutParams.FILL_PARENT,
	             LinearLayout.LayoutParams.WRAP_CONTENT);
		 setContentView(dynamicview);

	     for(int i=0;i<10;i++) {
	    	    Button btn = new Button(this);
	    	    btn.setId(i+1);
	    	    btn.setText("Button"+(i+1));
	    	    btn.setLayoutParams(lprams);
	    	    final int index = i;
	    	    btn.setOnClickListener(new OnClickListener() {
	    	        public void onClick(View v) {
	    	            Log.i("TAG", "The index is" + index);
	    	        }
	    	    });
	    	    dynamicview.addView(btn);
	    	}

	}
	
}
Начальный файл разметки levels.xml, на который ссылается dynamicview следующий:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android='http://schemas.android.com/apk/res/android'
    xmlns:tools='http://schemas.android.com/tools'
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
</LinearLayout>
Программа хорошо компилируется, но при запуске вылетает и выдает в LogCat ошибку:
07-05 19:05:58.313: W/dalvikvm(1098): threadid=1: thread exiting with uncaught exception (group=0x40015560)
07-05 19:05:58.342: E/AndroidRuntime(1098): FATAL EXCEPTION: main
07-05 19:05:58.342: E/AndroidRuntime(1098): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.CT/com.CT.LevelsActivity}: java.lang.NullPointerException
07-05 19:05:58.342: E/AndroidRuntime(1098): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
07-05 19:05:58.342: E/AndroidRuntime(1098): 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
07-05 19:05:58.342: E/AndroidRuntime(1098): 	at android.app.ActivityThread.access$1500(ActivityThread.java:117)
07-05 19:05:58.342: E/AndroidRuntime(1098): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
07-05 19:05:58.342: E/AndroidRuntime(1098): 	at android.os.Handler.dispatchMessage(Handler.java:99)
07-05 19:05:58.342: E/AndroidRuntime(1098): 	at android.os.Looper.loop(Looper.java:123)
07-05 19:05:58.342: E/AndroidRuntime(1098): 	at android.app.ActivityThread.main(ActivityThread.java:3683)
07-05 19:05:58.342: E/AndroidRuntime(1098): 	at java.lang.reflect.Method.invokeNative(Native Method)
07-05 19:05:58.342: E/AndroidRuntime(1098): 	at java.lang.reflect.Method.invoke(Method.java:507)
07-05 19:05:58.342: E/AndroidRuntime(1098): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
07-05 19:05:58.342: E/AndroidRuntime(1098): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
07-05 19:05:58.342: E/AndroidRuntime(1098): 	at dalvik.system.NativeStart.main(Native Method)
07-05 19:05:58.342: E/AndroidRuntime(1098): Caused by: java.lang.NullPointerException
07-05 19:05:58.342: E/AndroidRuntime(1098): 	at com.CT.LevelsActivity.onCreate(LevelsActivity.java:56)
07-05 19:05:58.342: E/AndroidRuntime(1098): 	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
07-05 19:05:58.342: E/AndroidRuntime(1098): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
07-05 19:05:58.342: E/AndroidRuntime(1098): 	... 11 more
Что я делаю неправильно? Уже смотрел кучу форумов, но ответа так и не нашел.
(Offline)
 
Ответить с цитированием