메인엑티비티는 아니구요
소켓통신해서 들어오는 메시지를 핸들러 통해서 setTextview 해주려고 하는데 nullpointerexception오류가 납니다.
main-------------------------------
public class MainActivity extends Activity {
private int port = 5001;
private String host = "공인ip";
private EditText edthost, edtport;
ObjectInputStream instream;
TextView aText;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toast.makeText(MainActivity.this, "checkUpdate", Toast.LENGTH_LONG)
.show();
edthost = (EditText) findViewById(R.id.editText1);
edtport = (EditText) findViewById(R.id.editText2);
edthost.append(host);
edtport.append(Integer.toString(port));
findViewById(R.id.button1).setOnClickListener(mClick);
}
OnClickListener mClick = new Button.OnClickListener() {
public void onClick(View v) {
host = edthost.getText().toString();
port = Integer.parseInt(edtport.getText().toString());
SocketConn socketcon = new SocketConn();
socketcon.setSocket(host,port);
}
};
}
---------------------------------
public class SocketConn extends Activity {
private String host, message;
private int port;
TextView textview;
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_main);
}
public void setSocket(String host, int port) {
this.host = host;
this.port = port;
tdsocket.setDaemon(true);
tdsocket.start();
}
Thread tdsocket = new Thread() {
public void run() {
try {
Socket socket = new Socket(host, port);
ObjectOutputStream outstream = new ObjectOutputStream(
socket.getOutputStream());
outstream.writeObject("Hello AndroidTown on Android");
outstream.flush();
ObjectInputStream instream = new ObjectInputStream(
socket.getInputStream());
message = (String) instream.readObject();
update.start();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
};
};
Thread update = new Thread() {
Handler mHandler = new Handler();
public void run() {
mHandler.post(new Runnable() {
public void run() {
textview = (TextView)findViewById(R.id.messageView);
textview.setText(message);
}
});
};
};
}
소스를 엄청 잘라내셨군요. xml 코드도 없고
정확한 판단이 힘들지만
1. textview에 객체 연결을 안하신 것 같습니다.
2. 하셨더라도 다른 xml에 있는 객체를 참조하신듯 합니다.
setContentsView(xml파일) 하셨으면 xml파일 안에 정의된 객체만 접근할 수 있습니다.