我正在尝试动态创建按钮,虽然代码使用线性布局来设置一个按钮,我的代码运行不会给出任何错误,也不会抛出任何异常或任何东西,但我得到的只是一个空屏幕。提前谢谢。
private void runThreadCreateButton(final List<Stop> stops) {
new Thread() {
public void run() {
int i=0;
while (i++ < 1) {
try {
runOnUiThread(new Runnable() {
@Override
public void run() {
for(int j=0;j<stops.size();j++)
{
Button myButton = new Button(getApplicationContext());
myButton.setText(stops.get(j).getName());
LinearLayout ll = new LinearLayout(getApplicationContext());
LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
ll.addView(myButton, lp);
}
}
});
Thread.sleep(1000);
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
}.start();
}
答案 0 :(得分:1)
您创建了一个新的布局,但您没有将Activity设置为显示您的布局。使用新布局在主活动上调用setContentView()
。
LinearLayout ll = new LinearLayout(getApplicationContext());
LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
ll.addView(myButton, lp);
//add something like this
yourMainActivity.setContentView(ll);
答案 1 :(得分:1)
好吧,如果你没有在你的活动中添加你的布局,这就是你的主要问题。
但是,您应该了解如何在xml中编写布局。这使您的代码更具可读性和可维护性。此外,您无需担心始终切换线程。
如果需要使用运行时数据填充视图,则应使用列表视图和列表适配器。 ListViews和ListAdapters是几乎所有Android应用程序的基本要素,所以你应该真正了解它们。如果您希望列表项包含更复杂的布局,可以通过实现自己的自定义列表适配器来实现。
使用列表视图时,您还可以进行大量性能调整。 对于大多数用例,从代码生成和管理布局不是一个好方法。