Dialog
사용자에게 메시지를 출력하고 사용자로부터 입력을 받는 인터페이스
AlertDialog • DatePickerDialog / TimePickerDialog
AlertDialog
AlertDialog는 Activity 클래스를 이용해서 구현할 수 있다.
public class MainActivity extends AppCompatActivity {protected void onCreate(Bundle savedInstanceState) {setContentView(R.layout.activity_main);mButton1.setOnClickListener(new View.OnClickListener() {public void onClick(View view) {
showDialog()를 통해 대화상자를 호출한다.
protected Dialog onCreateDialog(int id) {builder.setTitle("메시지").setPositiveButton("Yes", new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialogInterface, int i) {.setNegativeButton("No", new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialogInterface, int i) {return alert;return null;}
onCreateDialog는 showDialog 함수 호출시 호출되는 메소드이다. AlertDialog.Builder를 통해 대화상자를 설정하고 builder.create()를 통해 설정된 값으로 대화상자를 생성한다.
DialogFragment를 이용하여 AlertDialog 구현하기
Activity 클래스를 이용하는 것 외에 DialogFragment를 이용하는 방식이 있다.
public static class ButtonDialogFragment extends DialogFragment {public Dialog onCreateDialog(Bundle savedInstanceState) {builder.setTitle("메시지").setPositiveButton("Yes", new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialogInterface, int i) {.setNegativeButton("No", new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialogInterface, int i) {
내부적으로 DialogFragment를 상속받는 내부 클래스를 선언하였다.
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());//...getActivity().finish();
첫번째 방법과 다른 점은 this 부분이 getActivity()로 바꼇다는 점이다.
mButton1.setOnClickListener(new View.OnClickListener() {public void onClick(View view) {dialogFragment.show(getSupportFragmentManager(), "test");
해당 리소스에 리스너를 등록한다. 이 때 getSupportFragmentManager()를 이용하여 FragmentManager를 가져온다.(지원 라이브러리 사용할 경우)
DatePickerDialog
DialogFragment를 이용하여 구현한다.
public static class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {public Dialog onCreateDialog(Bundle savedInstanceState) {public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
onCreateDialog와 onDateSet 함수를 사용한다.
DatePickerDialog(Context context, DatePickerDialog.OnDateSetListener listener, int year, int month, int dayOfMonth)
Button bt = (Button) findViewById(R.id.button);// OnClickListener를 설정(무명클래스로 이벤트 리스너 객체를 생성하는 방식)하고 onClick 메소드 구현bt.setOnClickListener(new View.OnClickListener() {public void onClick(View v) {dpf.setEditText(editText);dpf.show(getFragmentManager(), "datePicker");
'IT > Android' 카테고리의 다른 글
Popup Menu 생성 (0) | 2017.10.23 |
---|---|
AlertDialog를 이용하여 RatingBar 띄우기 (0) | 2017.10.23 |
Intent (0) | 2017.10.23 |
Action Bar (0) | 2017.10.23 |
context menu (0) | 2017.10.23 |