私はクライアント(アンドロイドアプリ) - サーバー(java on netbeans)ソケットを使用してデータ/文字列を送受信できるチュートリアルをインターネット上に発見しましたいずれかの側。ユーザーは手動でEditTextにデータを入力してから、ボタンをクリックして送信する必要があります。Androidスタジオ自動的にTextViewの文字列を1つのアクティビティからソケットアクティビティに渡す
MainActivity
public class MainActivity extends AppCompatActivity {
EditText e1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
e1 = (EditText) findViewById(R.id.etMessage);
Thread myThread = new Thread(new MyServerThread());
myThread.start();
}
class MyServerThread implements Runnable{
Socket s;
ServerSocket ss;
InputStreamReader isr;
BufferedReader bufferedReader;
Handler h = new Handler();
String message;
@Override
public void run() {
try{
ss = new ServerSocket(2222);
while(true){
s = ss.accept();
isr = new InputStreamReader(s.getInputStream());
bufferedReader = new BufferedReader(isr);
message = bufferedReader.readLine();
h.post(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(),message, Toast.LENGTH_SHORT).show();
}
});
}
}catch (IOException e){
e.printStackTrace();
}
}
}
public void send(View v){
MessageSender messageSender = new MessageSender();
messageSender.execute(e1.getText().toString());
}
}
するmessageSender
public class MessageSender extends AsyncTask<String,Void,Void>{
Socket s;
DataOutputStream dos;
PrintWriter pw;
@Override
protected Void doInBackground(String... voids) {
String message = voids[0];
try{
s = new Socket("192.168.254.105",2222);
pw = new PrintWriter(s.getOutputStream());
pw.write(message);
pw.close();
s.close();
}catch (IOException e){
e.printStackTrace();
}
return null;
}
}
は今、私が次に何をしようとしているものです代わりに、手動でGUIにテキストを入力し、送信を押しますボタンを押すと、別のアクティビティからTextViewに文字列を送信したいと思いましょう。
String message = getIntent().getStringExtra("message_key");
passedMessage = (TextView)findViewById(R.id.tvPassed);
passedMessage.setText(message);
問題が実行した後であると、次のコードを使用してMainActivity.classにvity1.class。(ショーのTextViewがテキスト「こんにちは」conatains)
String message = show.getText().toString();
Intent intent= new Intent(Activity1.this, MainActivity.class);
intent.putExtra("message_key", message);
startActivity(intent);
ANSが主な活動でそれを呼び出します。 MainActivityのtextviewに渡された文字列はguiにのみ表示されますが、ソケット自体には送信されません。どのようにそれを動作させるためにどのようなアイデア?あなたが可能な第2の活動で
を呼び出す前に、すべてのコードは、あなたが投稿していることでしたボタンのActionListenerを割り当てるようにしてくださいは、中のTextViewから文字列を取ることでしたActivity1をクリックしてMainActivityのTextViewに貼り付けます。 passedMessage.setText(message)を呼び出した後、実際に文字列をサーバーに送信するコードを記述する必要があります。あなたがサーバーソケットに文字列を送信しない理由は、決してそうするように言わなかったからです! –