안녕하세요.
간단한 네트웍 프로그램 구현중에 문의 드립니다.
메인Activyty에서 SocketClient.java생성하여 호출후 결과를 받아와지는데
메인Activity 및 서버Activity 두군데에서 SocketClient를 호출할경우
SocketClient를 넘길경우 socketClient에서 어느쪽에서 요청이 왔는지를 체크하여 해당하는Activity로 결과를 넘길려는데
어떤식으로 해야할지 문의 드립니다.
구현할려는형식은 아래와 같습니다. 하나의Activity에서는 잘되는데 두군데에서 요청이 있을경우가 문제가 되네요.
소스중 SocketClient부분에 코딩부분중 붉은색 배경의 텍스트 부분이 SocketClient와 연결되는 부분인데 입니다.
그 부분을 어떤식으로 해야할지 알수가 없어 이렇게 글 올립니다.
socketClient = new SocketClient(this); <==OxQuiz에서 SocketClient 생성후 this로 값을 넘김
public class SocketClient{
public static OxList oxlist=null;
public static OxQuiz oxquiz=null;
public SocketClient(Activity activity) {
super();
oxquiz =(OxQuiz)activity; <=하나일경우 이렇게 하면 되는데 OxList에서 요청이 왔을경우엔 어떤식으로 해야할지 문의 드립니다.
oxlist =(OxList)activity; <== 이런식으로 요청하는 곳의 Activity가 하나 이상일경우 처리가 궁금합니다.
}
....
public void RequestSend(String msg,int partInt) {
switch (Integer.parseInt(partInt)) {
case 1:
oxlist.sendMsg(msg,2); <=요청한 Activity가 OxList 일경우 요청한 Activity로 값을 넘긴다.
break;
case 2:
oxquiz.sendMsg(msg,2); <=요청한 Activity가 OxQuiz 일경우 요청한 Activity로 값을 넘긴다.
break;
default:
break;
}
}
}
간략하게 구현한 코드 확인부탁드립니다.
Oxlist.java
public class OxQuiz extends Activity {
private Button sendButton;
private EditText inputTxt;
private ArrayList<OxMsg> list = new ArrayList<OxMsg>();
private ListView oxList;
private ListAdapter adapter;
private SocketClient socketClient;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
sendMsg("OX퀴즈가 시작되었습니다." + "퀴즈대한민국", 1);
inputTxt = (EditText) findViewById(R.id.input_box);
sendButton = (Button) findViewById(R.id.send); // 전송하기
socketClient = new SocketClient(this); <==OxQuiz에서 SocketClient 생성후 this로 값을 넘김
sendButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
String msgString = inputTxt.getText().toString();
socketClient.sendMessage(msgString);
sendMsg(msgString, 1);
inputTxt.setText("");
}
});
}
/* SocketClient에서 받아온다 이용한다 */
void sendMsg(String msg, int partInt) {
Log.d("OxQuiz","받은메세지:"+meMsg+"//보낸주체:"+partInt);
//리스트뷰에 add처리한다....
}
}
OxQuiz.java
public class OxList extends Activity {
private Button sendButton;
private EditText inputTxt;
private ListView olist;
private ListAdapter adapter;
private SocketClient socketClient;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
oxList = (ListView) findViewById(android.R.id.list);
sendMsg("다음퀴즈로 넘어갑니다.." + "퀴즈대한민국", 1);
inputTxt = (EditText) findViewById(R.id.input_box);
sendButton = (Button) findViewById(R.id.send); // 전송하기
socketClient = new SocketClient(this); <==OxList에서 SocketClient 생성후 this로 값을 넘김
sendButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
String msgString = inputTxt.getText().toString();
socketClient.sendMessage(msgString);
sendMsg(msgString, 1);
inputTxt.setText("");
}
});
}
/* SocketClient에서 받아온다 이용한다 */
void sendMsg(String msg, int partInt) {
Log.d("OxQuiz","받은메세지:"+meMsg+"//보낸주체:"+partInt);
}
}
import java.io.BufferedReader;
import java.io.PrintWriter;
import android.app.Activity;
public class SocketClient{
public static OxList oxlist=null;
public static OxQuiz oxquiz=null;
public static PrintWriter streamOut = null;
public static BufferedReader streamIn = null;
public SocketClient(Activity activity) {
super();
oxquiz =(OxQuiz)activity;
}
public void sendMessage(String msg) {
try {
//답을 서버로 전송한다.
//streamOut.println(msg);
//서버에 전송후 결과를 받아서 리스트뷰에 뿌려줄 데이타
RequestSend("정답은 브라질 입니다." + "퀴즈대한민국", 2);
} catch (Exception e) {
e.printStackTrace();
}
}
public void RequestSend(String msg,int partInt) {
oxquiz.sendMsg(msg,2);
}
}




startActivity(...