2016-04-15 20 views
1

EditTextでユーザからIPアドレスを取得し、EditTextでユーザが取得したコンピュータIPとモバイルを通信するためのアンドロイドコードを作成しました。java android programminging。ユーザからIPアドレスを取得する

私はボタンの何も作業をクリックすると、これは、私のコードです:

public class MainActivity extends Activity { 

Button b; 
EditText et; 
TextView tv; 
private Socket socket; 
int PORT = 4003; 
String HOST; //HOST = " 192.168.2.1" 

private Handler textview_handler_thread; 
class ClientThread implements Runnable { 

    @Override 
    public void run() 
    { 
     try { 
      socket = new Socket(HOST, PORT); 
      Message msg = null; 
      while(true) {  
       msg = textview_handler_thread.obtainMessage(); 
       msg.obj = "Process Completed Succesfully"; 
       textview_handler_thread.sendMessage(msg); 
      } 
     } 
     catch (Exception e){ 
      e.printStackTrace(); 
     } 
    } 
} 

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

    b = (Button) findViewById(R.id.button1); 
    et = (EditText) findViewById(R.id.editText1); 
    HOST = et.getText().toString(); 

    new Thread(new ClientThread()).start(); 

    textview_handler_thread = new Handler() { 
     public void handleMessage(Message msg) { 
      Object o = msg.obj; 

      if (o == null) 
       o = ""; 

      TextView tv = (TextView)findViewById(R.id.textView1); 
      tv.setText(o.toString()); 
     } 
     }; 

    b.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      try { 
       DataOutputStream output_to_server = new DataOutputStream(socket.getOutputStream()); 
       String client_str = et.getText().toString(); 
        output_to_server.writeBytes(client_str); 
        output_to_server.flush(); 

      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 
    }); 

} 

それは、ユーザからのIPアドレスが含まれているshoul HOST変数に問題があります。 最初に私はHOST = "192.168.2.1"と書いた。 しかし、今私はユーザーがそれをしたい。

注:私がHOST = "192.168.2.1"を書きました。正常に実行されます。テキストを編集するためにホストの値を割り当てたときCANTはコンピュータと通信しますWHY?

+0

ハンドラを起動していないようです –

+0

ユーザ入力値が 'HOST'になっていますか? – jgm

+0

onCreate()からgetText()を削除してonClick()に入れてください –

答えて

1

これは、OnCreateでHOSTに値を割り当てるためです。その時点で、そのテキストボックスはまだ空です。この時点で、OnClickイベント

String client_str = et.getText().toString(); 
HOST = Client_str; 

でそれをやってみたいことがあり

、HOSTは、ユーザーが入力したIPアドレスを含まなければなりません。また、OnCreateでスレッドを開始してはなりません。その時、HOSTはまだ何も持っていません。

+0

ありがとうございます...私のコードを編集できますか?あなたのコメントは私には分かりません。 –

+0

正常に作業していただきありがとうございます。 –

+0

C#アプリケーションにテキストビューのコンテンツを送信するにはどうすればよいですか? –

関連する問題