[Android Studio] DatePickerDialog 사용법(비망록)

10100 단어 AndroidStudio자바

DatePickerDialog를 사용해 보았습니다.



DatePickerDialog는 조각의 일종으로 사진과 같은 날짜 선택 도구를 사용할 수 있게 되는 것 같다.


단편에 대해 몰랐기 때문에 조사해 보면,

프래그먼트를 작성하려면 Fragment(또는 기존의 서브클래스)의 서브클래스를 작성해야 합니다.
(단편 만들기 (Android Developers))

라고 있었으므로, 호호 그렇다고 생각해 DatePickerDialog의 클래스를 만들어 보았다.

DatePickerDialogFragment.java
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.os.Bundle;
import android.widget.DatePicker;
import androidx.fragment.app.DialogFragment;
import java.util.Calendar;

public class DatePickerDialogFragment extends DialogFragment{

    @Override
    public Dialog onCreateDialog(Bundle savedInstantState){

        //デフォルトのタイムゾーンおよびロケールを使用してカレンダを取得
        final Calendar c = Calendar.getInstance();
        int year = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH);
        int day = c.get(Calendar.DAY_OF_MONTH);

        DatePickerDialog datePickerDialog = new DatePickerDialog(getActivity(), (DatePickerDialog.OnDateSetListener)getActivity(), year, month, day); //this はonDateSetListener
        return datePickerDialog;
    }

TestDatePickerActivity.java

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import java.util.Calendar;

public class TestDatePickerActivity extends AppCompatActivity implements View.OnClickListener, DatePickerDialog.OnDateSetListener{
    private TextView textView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test);

        textView = findViewById(R.id.textViewTest);
        textView.setOnClickListener(this);

//今日の日付をtextViewにセット
        Calendar c = Calendar.getInstance();
        textView.setText(String.format("%d年%d月%d日", c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH)));
    }

    @Override
    public void onClick(View view) {
        //DatePickerFragmentを表示
        DatePickerDialogFragment datePicker = new DatePickerDialogFragment();
        datePicker.show(getSupportFragmentManager(), "datePicker");
    }

    //DatePickerFragment で日付がセットされたときにtextViewに取得した日付を代入する
    @Override
    public void onDateSet(DatePicker datePicker, int year, int month, int dayOfMonth) {
        textView.setText(String.format("%d年%d月%d日", year, month + 1, dayOfMonth));
    }

TestDatePickerActivity 에는 오늘의 일자가 나오고, 텍스트를 클릭하면 방금전의 DatePickerDialogFragment 가 불려 가고 일자 선택 툴이 나온다.


여기서, DatePickerDialogFragment 클래스에 OnDateSet 메소드를 쓴 경우, 어떠한 기술을 하면 선택한 일자를 testDatePickerActivity에 표시할 수 있는지 몰랐다. onDateSet 메소드를 testDatePickerActivity로 상속하면 어떻게든 할 수 있었기 때문에 좋았다는 이야기였습니다.

그건 그렇고 ...



이 사이트 등이라면 한 클래스에 정리해 쓰고 있다. ( htps : // 코엔긴 fぉw. 코 m / 쓰리 아 ls / 앙 d 로이 d / 다테 피 c r ぢ 아 g )
서브 클래스를 굳이 만들 필요는 없지만, 읽기 어렵기 때문에 클래스를 나누는 것이 깨끗하게 보인다고 생각한다.

좋은 웹페이지 즐겨찾기