내가 여기 멍청한 짓을하고 있어요 확신하지만, 다음 코드안드로이드 처리기 문제
...
public void onClick(View v) {
extractThread et = new extractThread();
et.start();
}
...
private class extractThread extends Thread{
public void run(){
expensiveOperation();
Message m = new Message();
Bundle b = new Bundle();
b.putString("message","result");
m.setData(b);
extractHandler.dispatchMessage(m);
}
}
private Handler extractHandler = new Handler(){
public void handleMessage(Message m){
Bundle b = m.getData();
String message = b.getString("message");
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setMessage(message)
.setCancelable(false)
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
builder.create().show();
}
};
여전히 이것이 사실에도 불구하고, 라인 builder.create().show();
에
01-07 11:55:02.791: ERROR/AndroidRuntime(18791): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
을 받고있다 내 메인 스레드에서 내부 처리기 내에서 호출 handleMessage
. 내가 도대체 뭘 잘못하고있는 겁니까?
고맙고, 매우 유용한 조언이며, 문제였던'dispatchMessage()'를 사용했습니다. – fredley