首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Android中动态创建按钮?

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

Stack Overflow用户
提问于 2015-11-12 03:37:35
回答 1查看 45关注 0票数 0

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

代码语言:javascript
运行
复制
LinearLayout mainLayout = (LinearLayout)findViewById(R.id.mainLayout);

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

mainLayout.addView(addButton);

我的应用程序启动,然后意外退出,LogCat抛出以下错误:

代码语言:javascript
运行
复制
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中。

EN

回答 1

Stack Overflow用户

发布于 2015-11-12 04:44:21

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

代码语言:javascript
运行
复制
Button addButton = new Button(this);

这里的问题是它告诉你的:

代码语言:javascript
运行
复制
android.widget.LinearLayout.addView(android.view.View)' on a null object reference

它来自这一行:

代码语言:javascript
运行
复制
mainLayout.addView(addButton);

为什么?

因为这行代码返回null:

代码语言:javascript
运行
复制
findViewById(R.id.mainLayout);

为什么返回null?

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33658494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档