1
OpenGL 스레드와의 통신에 사용되는 Android.os.Handler를 사용한 활동이 있습니다. 나는 OpenGL을 스레드에서 메시지를 가져오고 메시지 데이터에 따라 활동에 약간의 GUI를 그리려는, 그래서 수행메시지에 따라 handleMessage에서 onClickListener를 동적으로 변경하십시오.
Handler handle = new Handler(new Handler.Callback(){
public boolean handleMessage(Message msg){
// update GUI like
TextView v1 = (TextView) GamescreenActivity .this.findViewById(R.id.mytextview)
// then what I actually would like to do but it does not work:
Button b = (Button) GamescreenActivity.this.findViewById(R.id.mybutton);
b.setOnClickListener(null);
if (msg.what == MY_OWN_CONSTANT) {
b.setOnClickListener(getOnClickDoSomething(msg));
}
}
View.OnClickListener getOnClickDoSomething(final Message msg) {
return new View.OnClickListener() {
public void onClick(View v) {
makeDialog(msg);
}
};
}
private void makeDialog(Message msg) {
AlertDialog.Builder builder = new AlertDialog.Builder(GamescreenActivity.this);
builder.setMessage("yo")
.setTitle(""+ msg.what);
AlertDialog dialog = builder.create();
dialog.show();
}
나는 내가 달성하기 위해 노력하고있어 분명하다 바랍니다. 지금 내가 뭘 얻는지는 거의 항상 makeDialog 메서드에서 msg가 null이된다.