2

こんにちはみんな私はいくつかの例に出くわしたソケット接続を使用するアプリケーションを作成しようとしています。以下のコードは2.3.3で実行すると正常に動作し、3.0でも同じクラッシュが発生します。

package com.simple.client;

import android.app.Activity;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.os.Bundle;

public class SimpleClientActivity extends Activity {
EditText textOut;
TextView textIn;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    textOut = (EditText)findViewById(R.id.textout);
    Button buttonSend = (Button)findViewById(R.id.send);
    textIn = (TextView)findViewById(R.id.textin);
    buttonSend.setOnClickListener(buttonSendOnClickListener);
}

Button.OnClickListener buttonSendOnClickListener
= new Button.OnClickListener(){

public void onClick(View arg0) {
// TODO Auto-generated method stub
Socket socket = null;
DataOutputStream dataOutputStream = null;
DataInputStream dataInputStream = null;

try {
 socket = new Socket("172.16.2.172", 8899);
 dataOutputStream = new DataOutputStream(socket.getOutputStream());
 dataInputStream = new DataInputStream(socket.getInputStream());
 dataOutputStream.writeUTF(textOut.getText().toString());
 textIn.setText(dataInputStream.readUTF());
} catch (UnknownHostException e) {
 // TODO Auto-generated catch block
 e.printStackTrace();
} catch (IOException e) {
 // TODO Auto-generated catch block
 e.printStackTrace();
 e.printStackTrace();
}
finally{
 if (socket != null){
  try {
   socket.close();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }

 if (dataOutputStream != null){
  try {
   dataOutputStream.close();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }

 if (dataInputStream != null){
  try {
   dataInputStream.close();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
   }
  }
 }
}};
}

私はすべてを試しましたが、何が起こっているのか理解できませんでした、

4

2 に答える 2

2

私の推測では、StrictMode.ThreadPolicyによって引き起こされたエラーです。android 3.0では、同じUIスレッドでネットワークにアクセスすることはできません。

于 2012-05-30T10:27:38.003 に答える
1

レイアウト用に複数のリソースフォルダがありますか?はいの場合、関連するレイアウトがない可能性があります。

于 2012-05-30T10:40:41.300 に答える