Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Android中动态创建按钮?_Java_Android_Eclipse - Fatal编程技术网

Java 如何在Android中动态创建按钮?

Java 如何在Android中动态创建按钮?,java,android,eclipse,Java,Android,Eclipse,我正在构建我的第一个android应用程序,我试图用按钮填充屏幕,这些按钮最终将从SQLLite数据库填充。我不知道如何动态创建按钮。现在我的主要活动只有一个线性布局。当我尝试通过以下代码动态创建按钮时: LinearLayout mainLayout = (LinearLayout)findViewById(R.id.mainLayout); Button addButton =new Button(this); addButton.setText("add"); mainLayout.a

我正在构建我的第一个android应用程序,我试图用按钮填充屏幕,这些按钮最终将从SQLLite数据库填充。我不知道如何动态创建按钮。现在我的主要活动只有一个线性布局。当我尝试通过以下代码动态创建按钮时:

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

Button addButton =new Button(this);
addButton.setText("add");

mainLayout.addView(addButton);
我的应用程序启动后意外退出,LogCat抛出以下错误:

11-11 15:34:21.622: E/AndroidRuntime(16734): FATAL EXCEPTION: main
11-11 15:34:21.622: E/AndroidRuntime(16734): Process:
com.brycemacinnis.easycook, PID: 16734
11-11 15:34:21.622: E/AndroidRuntime(16734): java.lang.RuntimeException:
Unable to start activity  ComponentInfo{com.brycemacinnis.easycook/com.brycemacinnis.easycook.MainActivity
}:java.lang.NullPointerException: Attempt to invoke virtual method 'void
android.widget.LinearLayout.addView(android.view.View)' on a null object reference

我在网上找到了多种创建按钮的方法,但每次都会发生同样的事情。是否仍有方法修复此错误?最终,我希望按钮进入滚动视图。

创建按钮的代码是正确的

Button addButton = new Button(this);
这里的问题是这告诉你什么:

android.widget.LinearLayout.addView(android.view.View)' on a null object reference
这句话的意思是:

mainLayout.addView(addButton);
为什么?

因为这行代码返回null:

findViewById(R.id.mainLayout);
为什么返回空值?


可能是因为您做得太早(例如在片段中的onCreate中),或者您为setContentView(R.layout.XXX)调用提供了错误的布局id(如果您在活动中)。

您应该使用列表视图,并使用自定义列表适配器使列表项可单击。如果要使用该类型的布局,还有一个网格视图。
mainLayout
为空。有关详细信息,请粘贴活动xml布局代码