Java Android:在选定微调器项目后动态添加按钮

Java Android:在选定微调器项目后动态添加按钮,java,android,button,spinner,Java,Android,Button,Spinner,这是一个有点艰难的时间来工作,这是一个对我的理解块 如果我有一个微调器项,其中包含文本“the[item]is[color]”,选择此项后,我希望它填充一个。。。tablerow或类似的东西(或只是一个相对物)。。。有两个按钮,[项目]和[颜色],一个叠在另一个上 public void onItemSelected(AdapterView<?> parentview, View arg1, int position, long id) { final TableLayo

这是一个有点艰难的时间来工作,这是一个对我的理解块

如果我有一个微调器项,其中包含文本“the[item]is[color]”,选择此项后,我希望它填充一个。。。tablerow或类似的东西(或只是一个相对物)。。。有两个按钮,[项目]和[颜色],一个叠在另一个上

public void onItemSelected(AdapterView<?> parentview, View arg1, int position, long id) 
{

    final TableLayout t1 = (TableLayout)findViewById(R.id.button_items);
    final TableRow tr = new TableRow(t1.getContext());
ArrayList<String> words = Create_ArrayList(R.raw.titles);  
而且按钮不会出现。。。应用程序刚刚崩溃。。。进了一座山


非常感谢你的帮助。。。谢谢大家

这是因为您将同一个按钮反复添加到同一个表行。你可以使用一系列按钮

btns = new Button[]{button1, button2, etc...} 
然后说:

for(int i = 0; i < x.size() ; i++ ){
     btn[i] = new Button(tr.getContext());
     btn[i].setText(x.get(i));
     tr.addView(btn[i]);
}
for(int i=0;i
在第一个代码块中

final TableLayout t1 = (TableLayout)findViewById(R.id.button_items);
您已经有了t1的视图,但是在第三个代码块中,您再次添加了视图

tr.addView(btn);
       t1.addView(tr, new TableLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
这就是你例外的原因

当视图已准备就绪时(例如,您使用findViewById获得它,不要在其上使用addView)。如果要添加视图,请将addView与新视图一起使用。可以将这些新视图中的多个添加到一个视图中,但不能多次添加该视图


这是我在其他帖子中找到的

嘿,谢谢你的回复。我花了几分钟时间深入思考这个问题,最终找到了答案。我发现仅仅使用t1.addView(btn,新参数…等等)就行了,但其他一切都不是必需的。我当然接受这个答案,非常感谢你的建议!谢谢你的回复,我不需要用按钮改变任何东西,它看起来很好。这只是将它们弹出到桌面视图中的问题。再次感谢!
for(int i = 0; i < x.size() ; i++ ){
     btn[i] = new Button(tr.getContext());
     btn[i].setText(x.get(i));
     tr.addView(btn[i]);
}
final TableLayout t1 = (TableLayout)findViewById(R.id.button_items);
tr.addView(btn);
       t1.addView(tr, new TableLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));