2017-06-13 12 views
-1

Androidスタジオを使用してAndroid Javaでアプリを作っています。 0.1秒ごと特定のTextView内のテキストを更新したい。Android Java:ユーザー入力なしでx秒ごとにTextViewを更新する

0.1秒(100 ms)ごとにメソッドを実行するためにハンドラを使用することはすでに管理されていますが、TextViewは自動的に更新されません。

ユーザーがアプリケーションとやり取りするときにTextViewを更新するだけです。たとえば、ユーザーがSeekBarをスライドさせたり、ボタンを押した場合にのみ更新されます。ユーザーが画面をクリックしたときには更新されず、入力なしでも自動的には更新されません。

ユーザー入力なしで自動的に値を更新するようにするにはどうすればよいですか?

ありがとうございます。

P.S:AndroidとJavaの新機能です。スレッドを使用してxml形式の値をウェブサイトから取得しています。

コードを投稿する必要がありますか?その場合、正確には何ですか?

+1

はい –

答えて

1

UIスレッドのテキストビューの値を更新できます。

runOnUiThread(new Runnable() { 
     @Override 
     public void run() { 
      //update TextView here 
     } 
    }); 
+0

は、私はあなたがハンドラのRunnableを内部で書いたコードを配置する必要がありますか、より理解するためにここにコードを置きますか?そこでここでは、Runnableのメソッドpublic void run(){..ここ..}の中に?私はこれを試して、それは同じを示したが、私は間違っている可能性があります – Dipsy

+0

はい。あなたは0.1秒ごとにメソッドを呼び出すのですか? – Anmol

+0

ありがとう、それは今うまく動作します!しかし、私はrunOnUiThread()に関するこの情報を実際にどこで見つけることができましたか?私が質問しないと、どうすればそれについて知ることができましたか(将来の問題の可能性について) AndroidのドキュメントのWebサイトで見つけられなかったからです。ありがとう! – Dipsy

1
Thread t = new Thread() { 
     @Override 
     public void run() { 
      try { 
       while (!isInterrupted()) { 
        Thread.sleep(100); 
        runOnUiThread(new Runnable() { 
         @Override 
         public void run() { 
          // update TextView here! 
         } 
        }); 
       } 
      } catch (InterruptedException e) { 
      } 
     } 
    }; 

    t.start(); 

あなたはこのように、また、スレッドを使用して、あなたのTextViewを更新することができます。

0
int prStatus = 0; 
new Thread(new Runnable() { 
     public void run() { 
      while (prStatus < 100) { 
       prStatus += 1; 
       handler.post(new Runnable() { 
        public void run() { 
         tv.setText(prStatus + "/"); 
        } 
       }); 
       try { 
        Thread.sleep(150); 
       } catch (InterruptedException e) { 
        e.printStackTrace(); 
       } 

       if(prStatus == 100) 
        prStatus = 0; 
      } 
     } 
    }).start(); 
関連する問題