1. 준비물

Dialog를 사용할 것입니다. Dialog를 위해 이런 코드를 써야 합니다.


import android.content.DialogInterface;
import android.content.Intent;
 
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatDialogFragment;    
 
    private void openDialog() {
    }
cs


이렇게 하면 Dialog가 열립니다.

Dialog 안에도 inflater를 써서 콘텐츠를 가져옵니다.


        LayoutInflater inflater = LayoutInflater.from(getContext());
        View subView = inflater.inflate(R.layout.dialog_layout, null);
cs


View도 가져옵니다. View를 가져올 시엔 inflater를 사용합니다. getContext()는 액티비티의 속성을 가져오기 위해 사용합니다.


        final EditText subEditText = (EditText) subView.findViewById(R.id.dialogEditText);
 
cs


EditText는 유저가 할 말을 전달하는 역할을 수행합니다.


그 외 기타 코드들 입니다.


        subEditText.setSelection(subEditText.length());
        AlertDialog.Builder builder = new AlertDialog.Builder(new ContextThemeWrapper(getContext(), R.style.myDialog));
        builder.setTitle("Text to Post");
        builder.setView(subView);
        AlertDialog alertDialog = builder.create();
cs


Dialog는 builder로 create()해줘야 합니다.


2. 긍정, 부정 버튼

긍정 버튼은 이렇게 구현합니다.


        builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                mEditTextdialogOpenField.setText(subEditText.getText().toString());
            }
        });
cs


이러면 긍정적으로 버튼이 작동합니다. 질문에 긍정적으로 답했을 때 코드들이 실행되는 구조입니다.

반대로 부정 버튼은 이렇게 합니다.


        builder.setNegativeButton("Cancel"new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                Snackbar.make(getView(), "Cancel", Snackbar.LENGTH_LONG).show();
            }
        });
cs


이러면 버튼이 부정적으로 동작하게 됩니다.


        builder.show();
 
cs


애써 만든 코드에 show()를 더해줘야 정상적으로 동작합니다.

+ Recent posts