0

しばらく待ってからTextViewのテキストを変更するスレッドが必要です。 私の検索が見つかりましたhow to use runOnUiThreadrunInUiThreadでsetTextを使用したときのエラー

私は最初の答えを理解し、私のコードでそれを使用しようとしましたが、スレッドでsetTextを呼び出すときにエラーが発生します。

public class MainActivity extends AppCompatActivity { 

    public int i = 0; 
    private TextView mText; 
    private Thread thread; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     mText = (TextView)findViewById(R.id.text); 
    } 

    public void start (View v) { 
     runThread(); 


    } 

    private void runThread() { 

     new Thread() { 
      public void run() { 
       while (true) { 
        try { 
         runOnUiThread(new Runnable() { 

          @Override 
          public void run() { 
           i++; 
           mText.setText((i)); 
          } 
         }); 
         Thread.sleep(100); 
        } catch (InterruptedException e) { 
         e.printStackTrace(); 
        } 
       } 
      } 
     }.start(); 
    } 

} 

はここ

09-26 20:26:34.054 22254-22254/com.horizon.testtimerthread E/AndroidRuntime: FATAL EXCEPTION: main 
                      android.content.res.Resources$NotFoundException: String resource ID #0x1 
                       at android.content.res.Resources.getText(Resources.java:1058) 
                       at android.support.v7.widget.ResourcesWrapper.getText(ResourcesWrapper.java:52) 
                       at android.widget.TextView.setText(TextView.java:3866) 
                       at com.horizon.testtimerthread.MainActivity$1$1.run(MainActivity.java:39) 
                       at android.os.Handler.handleCallback(Handler.java:615) 
                       at android.os.Handler.dispatchMessage(Handler.java:92) 
                       at android.os.Looper.loop(Looper.java:177) 
                       at android.app.ActivityThread.main(ActivityThread.java:4947) 
                       at java.lang.reflect.Method.invokeNative(Native Method) 
                       at java.lang.reflect.Method.invoke(Method.java:511) 
                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038) 
                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805) 
                       at dalvik.system.NativeStart.main(Native Method) 

はあなたの助けのために事前にありがとうございます、私のエラーです:

は、ここに私のコード (スタートボタンのonClickの機能である)です。

答えて

2

mText.setText((i))が問題です。

Androidは、IDが1の文字列が見つからないため、文字列IDを参照していると思っています。テキストを「1」、「2」などに設定する場合は、mText.setText((Integer.toString(i)))

+0

今私はとてもダムを感じています。はい、ありがとうございます。 –

+0

心配しない;)あなたはどれくらい成長したかの例として将来これを使用します – Shmuel

1

iはint型であるため、setText(int resourceId)という関数の変種を呼び出していますが、あなたが望んでいないのは何ですか? setText(String.valueOf(i))はうまくいくはずです。

関連する問題