대학 생활/Android
[Android] dialog 버튼 닫힘 막기 (Builder, AlertDialog)
opid
2014. 6. 3. 03:14
문제점
다이얼로그에서 버튼을 클릭하면 닫히는 것을 막으려고 한다.참고사이트
해결방안
기존 리스너는 버튼만 만들어주고 AlertDialog 객체를 통해 오버라이딩해서 사용한다.
그리고 아래 조건문을 통해 dimiss()를 제어한다.
코드
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tvName = (TextView) findViewById(R.id.tvName);
btnClick = (Button) findViewById(R.id.btnClick);
btnClick.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
dialogView = (View) View.inflate(asdasd.this, R.layout.dialog,
null);
AlertDialog.Builder builder = new AlertDialog.Builder(
asdasd.this);
builder.setMessage("Test input data");
builder.setView(dialogView);
builder.setPositiveButton("ok",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
}
});
builder.setNegativeButton("clear",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
}
});
final AlertDialog dialog = builder.create();
dialog.show();
dlg_edt_name = (EditText) dialogView
.findViewById(R.id.dlg_edt_name);
dialog.getButton(AlertDialog.BUTTON_POSITIVE)
.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Boolean wantToCloseDialog = true;
tvName.setText(dlg_edt_name.getText());
if (wantToCloseDialog)
dialog.dismiss();
}
});
dialog.getButton(AlertDialog.BUTTON_NEGATIVE)
.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Boolean wantToCloseDialog = false;
dlg_edt_name.setText("");
if (wantToCloseDialog)
dialog.dismiss();
}
});
}
});
}
dialogExam.zip