2016-08-04 21 views
1

私のアプリはサーバーに接続し、そこからデータを受け取る必要があります。しかし、このエラーのために動作しません:アンドロイドはrunonuithreadメソッドを解決できません

android cannot resolve method runOnUiThread(anonymous java.lang.Runnable) 

この問題を解決するにはどうすればよいですか?

コード:メソッド内

package com.example.chudnofsky.myapplication; 

import android.app.Activity; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 

import java.io.BufferedOutputStream; 
import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.io.PrintWriter; 
import java.net.InetAddress; 
import java.net.Socket; 
import java.net.UnknownHostException; 

public class MainActivity extends AppCompatActivity { 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    final TextView textview = (TextView) findViewById(R.id.textView); 
    Button button = (Button) findViewById(R.id.button); 

    button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

      new Thread(new Runnable() { 
       @Override 
       public void run() { 
        try { 
         InetAddress serverAddr = InetAddress.getByName("192.168.190.47"); 
         Socket socket = new Socket(serverAddr, 15000); 

         PrintWriter out = null; 
         BufferedReader in = null; 

         //out = new PrintWriter(String.valueOf(new BufferedReader(new InputStreamReader(socket.getInputStream())))); 
         in = new BufferedReader(new InputStreamReader(socket.getInputStream())); 

         if (socket.isConnected()) { 
          String text = ""; 
          String finalText = ""; 
          while ((text = in.readLine()) != null) { 
           finalText += text; 
          } 
          WriteText(textview, finalText); 
          Log.d("TCP", "Connected"); 
         } 

        } catch (UnknownHostException e) { 
         e.printStackTrace(); 
        } catch (IOException e) { 
         e.printStackTrace(); 
        } 
       } 
      }).start(); 


     } 
    }); 

} 
public void WriteText(final TextView textView, final String value){ 
    runOnUiThread(new Runnable() { 
     @Override 
     public void run() { 
      textView.setText(value); 
     } 
    }); 
} 

} 
+0

私はrunOnUIThreadメソッドの宣言が表示されませんか? –

+0

@MaciejSikoraスレッドセーフです。私は同時にデータを送受信することができます。 '公共ボイドWRITETEXT(最終のTextViewのTextView、最終的な文字列値){ runOnUiThread(新しいRunnableを(){ @Override公共ボイドラン(){ textView.setText(値); }})。 } ' –

答えて

1

は、次の操作を行います。

new Handler().post(runnable); 

をと定義し、このような実行可能:

Runnable runnable = new Runnable() { 
    public void run() { 
     runOnUiThread(new Runnable() { 
      public void run() { 
       textView.setText(value); 
      } 
    }); 
+0

残念ながら、それは仕事をしなかった –

関連する問題