2017-02-21 60 views
-4

我想动态地添加按钮和这些在一行中。
在下面我我的代码总结有这样的错误:字符串不能转换为android.widget.Button

java.lang.String cannot be cast to android.widget.Button 

我已经在类似的错误消息一直在寻找,但我解决不了我的。
这里是我的代码:

for (int i = 1; i < 5; i++) { 
    a=a+a; 
    FrameLayout.LayoutParams a = new FrameLayout.LayoutParams(262, 146); 
    a.leftMargin = coorX; coorX = coorX + 250; 
    FrameLayout layout = (FrameLayout) findViewById(R.id.layout1); 
    layout.addView (((Button)boton.get(i)),a); // here's the error 
    ((Button)boton.get(i)).setOnClickListener(new View.OnClickListener(){ 
     @Override 
     public void onClick(View view) { 
      switch (((Button)view).getId()){ 
      case 1: recuadro("wǒ", 1); break; 
      case 2: recuadro("hěn", 2); break; 
      case 3: recuadro("ne", 3); break; 
      case 4: recuadro("nĭ ne?", 4); break; 
      case 5: recuadro("yě", 5); break; 
      } 
    }); 

} 
+0

这就像你试图把苹果变成香蕉一样。 –

+0

解决方案是保持苹果在苹果上通过。 –

+0

将字符串传递给字符串,按钮传递给按钮。无论是同一类型的任何东西。 –

回答

0

尝试创建的,而不是在你的情况下添加一个字符串

new Button("Here the string"); 

一个按钮:

new Button(boton(i)) 

编辑

for (int i = 1; i < 5; i++) { 
    a=a+a; 
    FrameLayout.LayoutParams a = new FrameLayout.LayoutParams(262, 146); 
    a.leftMargin = coorX; coorX = coorX + 250; 
    FrameLayout layout = (FrameLayout) findViewById(R.id.layout1); 
    Button buttonToAdd = new Button(boton.get(i)); 
    layout.addView (buttonToAdd,a); // here's the error 
    buttonToAdd.setOnClickListener(new View.OnClickListener(){ 
     @Override 
     public void onClick(View view) { 
      switch (((Button)view).getId()){ 
      case 1: recuadro("wǒ", 1); break; 
      case 2: recuadro("hěn", 2); break; 
      case 3: recuadro("ne", 3); break; 
      case 4: recuadro("nĭ ne?", 4); break; 
      case 5: recuadro("yě", 5); break; 
      } 
    }); 

} 

如果我不是错了这个样子。

+0

对不起,我不是专家,但我不知道在哪里以及如何创建按钮,而不是添加字符串。 – FAR

+0

看看我的编辑。 – Ivan

+0

谢谢,它的工作原理。 – FAR

0

boton是一个字符串列表,你撒开元素融入Buttons。因此,错误消息java.lang.String cannot be cast to android.widget.Button

+0

在这种情况下,我能做些什么来将我的字符串按钮转换为按钮? – FAR

+0

您需要创建按钮。而不是'layout.addView(((Button)boton.get(i)),a);',做'Button button = new Button(boton.get(i));'然后'layout.addView(button, a);'然后执行'button.setOnClickListener(.....其余代码)' –

+0

我已经应用了导览建议,但是在代码中出现错误消息: Button(...)无法应用到java.lang.Object 它可能是什么?现在我的代码会这样吗?: FrameLayout layout =(FrameLayout)findViewById(R.id.layout1); Button button = new Button(boton.get(i)); //你的建议 layout.addView(按钮,) (按钮)boton.get(I))。setOnClickListener(新View.OnClickListener(){ ... – FAR

相关问题