2013-03-14 38 views
0

如何設置文本到TextViews的數組。android將文本設置爲textviews的arraylist

這是我編:

public void onClickButtons(View view) { 

    if(view==mBtnGuess) { 
     int i; 
     String word = "someword"; 
     String getInput = mEtxtUserInput.getText().toString(); 
     char[] wordChars = word.toCharArray(); 
     if(getInput.length()>0) { 

      if(getInput.length()==1) { 
       List<TextView> txtCharArr= new ArrayList<TextView>(); 
       txtCharArr.add(mChar1); 
       txtCharArr.add(mChar2); 
       txtCharArr.add(mChar3); 
       txtCharArr.add(mChar4); 
       txtCharArr.add(mChar5); 
       txtCharArr.add(mChar6); 
       txtCharArr.add(mChar7); 
       txtCharArr.add(mChar8); 
       txtCharArr.add(mChar9); 
       txtCharArr.add(mChar10); 
       txtCharArr.add(mChar11); 
       txtCharArr.add(mChar12); 
       StringBuilder sb = new StringBuilder(); 
       for(i=0;i<wordChars.length;i++) { 
        if(wordChars[i]==(word.charAt(i))) { 
         txtCharArr.get(i).setText(word.charAt(i)); 
         sb.append(word.charAt(i)); 
        } 
       } 
      } 
     } 
    } 
} 

StringBuilder的僅僅是保存在那裏等於所有字符。上面的代碼提供了一個錯誤:

03-14 07:44:27.387: E/AndroidRuntime(1893): FATAL EXCEPTION: main 
03-14 07:44:27.387: E/AndroidRuntime(1893): java.lang.IllegalStateException: Could not  execute method of the activity 
03-14 07:44:27.387: E/AndroidRuntime(1893):  at android.view.View$1.onClick(View.java:3591) 
03-14 07:44:27.387: E/AndroidRuntime(1893):  at android.view.View.performClick(View.java:4084) 
03-14 07:44:27.387: E/AndroidRuntime(1893):  at android.view.View$PerformClick.run(View.java:16966) 
03-14 07:44:27.387: E/AndroidRuntime(1893):  at android.os.Handler.handleCallback(Handler.java:615) 
03-14 07:44:27.387: E/AndroidRuntime(1893):  at android.os.Handler.dispatchMessage(Handler.java:92) 
03-14 07:44:27.387: E/AndroidRuntime(1893):  at android.os.Looper.loop(Looper.java:137) 
03-14 07:44:27.387: E/AndroidRuntime(1893):  at android.app.ActivityThread.main(ActivityThread.java:4745) 
03-14 07:44:27.387: E/AndroidRuntime(1893):  at java.lang.reflect.Method.invokeNative(Native Method) 
03-14 07:44:27.387: E/AndroidRuntime(1893):  at java.lang.reflect.Method.invoke(Method.java:511) 
03-14 07:44:27.387: E/AndroidRuntime(1893):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
03-14 07:44:27.387: E/AndroidRuntime(1893):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
03-14 07:44:27.387: E/AndroidRuntime(1893):  at dalvik.system.NativeStart.main(Native Method) 
03-14 07:44:27.387: E/AndroidRuntime(1893): Caused by: java.lang.reflect.InvocationTargetException 
03-14 07:44:27.387: E/AndroidRuntime(1893):  at java.lang.reflect.Method.invokeNative(Native Method) 
03-14 07:44:27.387: E/AndroidRuntime(1893):  at java.lang.reflect.Method.invoke(Method.java:511) 
03-14 07:44:27.387: E/AndroidRuntime(1893):  at android.view.View$1.onClick(View.java:3586) 
03-14 07:44:27.387: E/AndroidRuntime(1893):  ... 11 more 
03-14 07:44:27.387: E/AndroidRuntime(1893): Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x76 
03-14 07:44:27.387: E/AndroidRuntime(1893):  at android.content.res.Resources.getText(Resources.java:229) 
03-14 07:44:27.387: E/AndroidRuntime(1893):  at android.widget.TextView.setText(TextView.java:3620) 
03-14 07:44:27.387: E/AndroidRuntime(1893):  at me.mikey.my.games.galgjex.Galgje.onClickButtons(Galgje.java:232) 

行232:

txtCharArr.get(i).setText(word.charAt(i)); 

我也試過:

public void onClickButtons(View view) { 

     if(view==mBtnGuess) { 
      int i; 
      String word = "someword"; 
      String getInput = mEtxtUserInput.getText().toString(); 
      if(getInput.length()>0) { 

       if(getInput.length()==1) { 
        List<TextView> txtCharArr= new ArrayList<TextView>(); 
        txtCharArr.add(mChar1); 
        txtCharArr.add(mChar2); 
        txtCharArr.add(mChar3); 
        txtCharArr.add(mChar4); 
        txtCharArr.add(mChar5); 
        txtCharArr.add(mChar6); 
        txtCharArr.add(mChar7); 
        txtCharArr.add(mChar8); 
        txtCharArr.add(mChar9); 
        txtCharArr.add(mChar10); 
        txtCharArr.add(mChar11); 
        txtCharArr.add(mChar12); 
        StringBuilder sb = new StringBuilder(); 
        for(i=0;i<getInput.length();i++) { 
         if(getInput.equals(word.charAt(i))) { 
          txtCharArr.get(i).setText(word.charAt(i)); 
          sb.append(word.charAt(i)); 
         } 
        } 
       } 
      } 
     } 
    } 

但這並不顯示任何東西。 StringBuilder是空的,當我輸入一個應該匹配的字符時,textViews中沒有顯示字符。

+0

你可以給清晰度上你的問題? – 2013-03-14 08:46:15

回答

1

因爲沒有TextView.setText(char x),所以您的char被轉換爲int,調用TextView.setText(int x),它將搜索ID爲x的資源。

您應該將一個字符串傳遞給setText()方法。您可以嘗試

txtCharArr.get(i).setText(Character.toString(word.charAt(i)));

txtCharArr.get(i).setText(word.subString(i, i+1)));

+0

我改變了它,但它仍然顯示任何東西。 \t \t \t \t \t \t \t StringBuilder sb = new StringBuilder(); \t \t \t \t \t \t \t爲(I = 0; I Zeebats 2013-03-14 08:56:32

+0

你問一個代替兩個問題。這解決了你的第一個問題...你可以編輯你的問題,所以只有第一部分仍然存在,然後接下來問你一個新的問題,以解決第二個問題... – Fortega 2013-03-14 08:58:14

+0

好的謝謝。我去做。 – Zeebats 2013-03-14 09:20:23