Material Components(MC) 사용법을 모른다면 여기로
Dialog의 MC 페이지는 이쪽 → 근데 코틀린으로 쓰여져 있다. 내 코드들은 자바인데...
사람들이 자바로는 이 기능을 안쓰는 걸까.? 왜 안나올까...
일단 내 식대로 해본 다음 글을 써볼게유..
❓ 결과
이렇게 나타난다. CANCEL과 OK의 위치가 다르지 않나 싶어서 찾아보니 이건 안드로이드가 지정한 거라 바꿀 수 없다고 하네..
그래서 그냥 positive에 negative 액션을 넣고 negative에 positive 액션을 넣기로 했당!
👩💼 코드를 올려봅시다.
나는 위의 MC페이지와 Android의 대화상자 페이지를 섞었다.
우선 DialogFragment를 만들어준다. → Dialog가 fragment임을 알 수 있다. XML은 건드리지 않는다.
onCreateDialog()메소드를 아래와 같이 만든다.
나는 여기서 Positive와 Negative 동작을 바꾸기 위해 문구가 뒤바껴있다.
@Override
public Dialog onCreateDialog(Bundle savedInstanceState){
MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(getActivity());
builder.setTitle(R.string.dialog_title)
.setMessage(R.string.dialog_message)
.setPositiveButton(R.string.dialog_cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
//작업 내용 입력
Log.d("Dialog", "Positive Button 확인");
}
})
.setNegativeButton(R.string.dialog_ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
//작업 내용 입력
Log.d("Dialog", "Negative Button 확인");
}
});
return builder.create();
}
그리고 Dialog를 띄울 Activity에서 객체를 만들어 show() 호출하면 끝!
DialogFragment df = new DialogFragment();
df.show(getSupportFragmentManager(), "Dialog");
그런데 아직 나의 문제는 끝나지 않았다고 한다...
내 의도는 Dialog가 떠있는 동안 전에 실행하고 있던 Activity를 pause, Cancel 되면 resume하는 것 이었는데 그러려면 Activity로 Dialog를 만들어 띄워야 한다고 한다...
그래서 이 내용은 다음 글에서 다루도록 하겠다!