繁体   English   中英

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

[英]How do you dynamically create buttons in Android?

我正在构建我的第一个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

我尝试了多种在线查找方法来创建按钮,但是每次都发生相同的事情。 反正有解决此错误的方法吗? 最终,我希望按钮进入scrollView。

您创建按钮的代码是正确的

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);

为什么返回null?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM