안녕하세요.
항상 여기서 많은 정보를 얻어 갑니다. ^^)
질문과같이 try~catch내에서 Dialog을 띄어야 하는 상황인데, 띄울 수 있는 방법이 따로 있을까요?
궁금하고 고민되네요. 알려주시면 정말 감사하겠습니다.
getBytes 사용으로 try~catch문을 꼭 사용해야 하는데(?), try~catch 구문안에 alertDialog가 들어가면 Dialog 창이 생성되지 않습니다.
또한 아래코드처럼 40bytes가 넘으면 경고창을 띄우고 msg_editText.setText을 통해서 메세지 내용을 40bytes이하가 되게 작성했는데 이것도 정상적으로 동작하지 않고 40bytes가 넘게 글이 써지네요.. ^^);
코드는 아래와 같습니다.
...
private void checkBytes(Editable s){
Log.d("MyTag","checkBytes Invoked");
String check_bytes = s.toString();
try{
byte[] getbyte = check_bytes.getBytes("UTF-8");
Log.d("MyTag","getbyte.length: "+getbyte.length);
if(getbyte.length>40){
alertDialog(); //alertDialog 창을 띄우고 싶습니다.
s.delete(s.length()-2, s.length()-1);
msg_editText.setText(s);
}
}catch (Exception e) {e.printStackTrace();}
}
private void alertDialog()
{
AlertDialog.Builder warning_message = new AlertDialog.Builder(Message.this);
warning_message.setTitle("글자 수 40자 제한");
warning_message.setMessage("최대 입력가능한 글자 수는 40자 입니다.");
warning_message.setPositiveButton("확인", new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog, int whichButton){
}
});
warning_message.show();
}
...
좋은 답변 부탁 드리겠습니다.




작성하신 소스로 테스트겸 해서 돌려봤는데 Dialog창이 잘뜨네요.
이런점으로 봐선 checkBytes()함수 호출을 메인Thread가 아닌 다른 Thread에서 호출해서 그런것같네요;;
(프로젝트 전체를 본게 아니라서 정확한 답변이 아니겟군요;; ㄷㄷ)
또 메세지 내용을 40자로 짜르기 위해서 s.delete(s.length()-2, s.length()-1); 사용하셧는데
호출후 리턴되는 Editable 객체를 msg_editText.setText() 해주어야 짤릴것이며,
delete 함수는 스트링 객체 길이 (예를 들면 "테스트" 스트링의 길이는 3이겠지만 byte의 길이는 6입니다.)에 따라
삭제하는 함수입니다.
도움이 되셧길 바랍니다아