DatePickerDialogを使ってみた
DatePickerDialogはフラグメントの一種で、写真のような日付選択ツールが使えるようになるらしい。

フラグメントについてわからなかったので調べてみると、
フラグメントを作成するには、Fragment(またはその既存のサブクラス)のサブクラスを作成する必要があります。
(フラグメントを作成する (Android Developers))
とあったので、ほほーそうかと思ってDatePickerDialogのクラスを作ってみた。
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;
    }
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で継承したらなんとかできたのでよかったねというお話でした。
ちなみに…
こちらのサイトなどだと一つのクラスにまとめて書いてある。(https://codinginflow.com/tutorials/android/datepickerdialog)
サブクラスをあえて作る必要はないけれど、読みにくいのでクラスを分けた方がきれいに見えると思う。