2017-02-21 101 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

相關問題