안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요.
리스트뷰에 서버에서 받은값을 추가해서 보여줄려는데 Null포인트 오류가 발생하네요
자신의 class에서는 잘 등록이되어 리스트에 나오는데 다른class에서 값을 받아와서 등록하고 보여줄려면 오류가
발생합니다.
이것저것 모두 수정을 하여도 해결이 안되어 이렇게 고수님들의 도움을 부탁드립니다.
아래소스를 보시면 OxQuiz.java의 sendMsg("여기서는 잘가지?", 2); 이렇게 보내면 다 잘 리스트뷰에
보여지는데
SocketClient.java의 sendMessage()로 입력값을 보내고 SocketClist.java 의
RequestSend()에서 OxQuiz로 값을 넘겨 등록하면 Null포인트 오류가 발생합니다.
프로젝트 파일 전체 압축하여 올려드립니다.
도움 꼭 부탁드립니다
.
테스트한 소스입니다.
public class OxQuiz extends Activity {
private Button sendButton;
private EditText inputTxt;
private ArrayList<OxMsg> list = new ArrayList<OxMsg>();
private ListView oxList;
private Button sendButton;
private EditText inputTxt;
private ArrayList<OxMsg> list = new ArrayList<OxMsg>();
private ListView oxList;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
oxList = (ListView) findViewById(android.R.id.list);
sendMsg("OX퀴즈가 시작되었습니다." + "퀴즈대한민국", 2);
inputTxt = (EditText) findViewById(R.id.input_box);
sendButton = (Button) findViewById(R.id.send); // 전송하기
final SocketClient socketClient = new SocketClient(this);
sendButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
String msgString = inputTxt.getText().toString();
//SocketClient의 sendMessage()로 메세지 전달후 결과를 받아온다.
socketClient.sendMessage(msgString);
sendMsg(msgString, 1);
//여기서는 전송이 잘되는데 SocketClient.java 파일의 RequestSend("정답은 브라질 입니다." + "퀴즈대한민국", 2); 에서는 전송이 안되네요ㅠ
sendMsg("여기서는 잘가지?", 2);
inputTxt.setText("");
}
});
}
private String getDate() {
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
Date d = new Date();
return sdf.format(d);
}
void sendMsg(String msg, int partInt) {
Log.d("OxQuiz","sendMsg:"+msg.toString());
String date = getDate();
if (partInt == 1) {
int mylist = R.layout.requst;
OxMsg meMsg = new OxMsg(date,msg, mylist,partInt);
list.add(meMsg);
} else {
int yourlist = R.layout.response;
OxMsg youMsg = new OxMsg( date,msg, yourlist,partInt);
list.add(youMsg);
}
//SocketClient.java의 RequestSend에서 받아와 실행시 오류가 발생 ㅠ.ㅠ
OxMsgViewAdapter adapter = new OxMsgViewAdapter(OxQuiz.this, list);
oxList.setAdapter(adapter);
}
public void onDestroy() {
super.onDestroy();
finish();
System.exit(0);
}
}
sendMsg("OX퀴즈가 시작되었습니다." + "퀴즈대한민국", 2);
inputTxt = (EditText) findViewById(R.id.input_box);
sendButton = (Button) findViewById(R.id.send); // 전송하기
final SocketClient socketClient = new SocketClient(this);
sendButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
String msgString = inputTxt.getText().toString();
//SocketClient의 sendMessage()로 메세지 전달후 결과를 받아온다.
socketClient.sendMessage(msgString);
sendMsg(msgString, 1);
//여기서는 전송이 잘되는데 SocketClient.java 파일의 RequestSend("정답은 브라질 입니다." + "퀴즈대한민국", 2); 에서는 전송이 안되네요ㅠ
sendMsg("여기서는 잘가지?", 2);
inputTxt.setText("");
}
});
}
private String getDate() {
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
Date d = new Date();
return sdf.format(d);
}
void sendMsg(String msg, int partInt) {
Log.d("OxQuiz","sendMsg:"+msg.toString());
String date = getDate();
if (partInt == 1) {
int mylist = R.layout.requst;
OxMsg meMsg = new OxMsg(date,msg, mylist,partInt);
list.add(meMsg);
} else {
int yourlist = R.layout.response;
OxMsg youMsg = new OxMsg( date,msg, yourlist,partInt);
list.add(youMsg);
}
//SocketClient.java의 RequestSend에서 받아와 실행시 오류가 발생 ㅠ.ㅠ
OxMsgViewAdapter adapter = new OxMsgViewAdapter(OxQuiz.this, list);
oxList.setAdapter(adapter);
}
public void onDestroy() {
super.onDestroy();
finish();
System.exit(0);
}
}
public class SocketClient{
public static OxQuiz oxquiz = new OxQuiz();
public static OxQuiz oxquiz = new OxQuiz();
public SocketClient(Activity activity) {
super();
}
public void sendMessage(String msg) {
try {
//답을 서버로 전송한다.
//streamOut.println(msg);
//서버에 전송후 결과를 받아서 리스트뷰에 뿌려줄 데이타
super();
}
public void sendMessage(String msg) {
try {
//답을 서버로 전송한다.
//streamOut.println(msg);
//서버에 전송후 결과를 받아서 리스트뷰에 뿌려줄 데이타
//서버에서 받았다는 가정하에 테스트
RequestSend("정답은 브라질 입니다." + "퀴즈대한민국", 2);
} catch (Exception e) {
e.printStackTrace();
}
}
public void RequestSend(String msg,int partInt) {
Log.d("OxQuiz","RequestSend:"+msg);
//여기서 OxQuiz.java의 sendMsg로 메제시를 보내는데 자구 Null포인트 익셉션이 발생되며 출력이 안되네요
this.oxquiz.sendMsg(msg,2);
}
}
RequestSend("정답은 브라질 입니다." + "퀴즈대한민국", 2);
} catch (Exception e) {
e.printStackTrace();
}
}
public void RequestSend(String msg,int partInt) {
Log.d("OxQuiz","RequestSend:"+msg);
//여기서 OxQuiz.java의 sendMsg로 메제시를 보내는데 자구 Null포인트 익셉션이 발생되며 출력이 안되네요
this.oxquiz.sendMsg(msg,2);
}
}
2011.12.07 16:53:53
답변감사합니다.
답변과같이 수정하니 잘됩니다.
다음의 문제가 발생하네요ㅠㅠ
SocketClient.java 를 사용하는 Activity가 한개가 아니구 두개인데요
OxList.java Actity
OxQuiz.java Activity 이렇게 두군데에서 사용합니다.
OxList.java에서 SocketClient.java을 연결하여 리스트를 받아오고
리스트를 클릭하면 OxQuiz Activity로 이동이 되어 동일하게 SocketClient에 연결하여 값을 받아옵니다.
public static OxQuiz oxquiz;
public SocketClient(Activity activity) {
super();
oxquiz =(OxQuiz)activity;
}
이와같이 하나는 구현이 되는데 두군데일경우 어떤식으로 해야할지 문의 드립니다.
public static OxList oxlist; <==이렇게 하나가 더 있어 두군데일경우 어떤식으로 해야할지요
public static OxQuiz oxquiz;
public SocketClient(Activity activity) {
super();
oxquiz =(OxQuiz)activity;
}




SocketClient.java에서
public static OxQuiz oxquiz = new OxQuiz(); == > public static OxQuiz oxquiz = null;
public SocketClient(Activity activity) { public SocketClient(Activity activity) {
super(); == > super();
} oxquiz = (OxQuiz)activity;
}
알아 보실수 있을려나 ㄷㄷ;