Compose Datepickerdialog

以前からあるDatePikderはこれ https://developer.android.com/reference/android/app/DatePickerDialog

あたらしく、MaterialDatePickerというのがある。 これはまず、appcompatが必要なdので

val appcompat_version = “1.4.1”

implementation("androidx.appcompat:appcompat:$appcompat_version")

をdependenciesにいれてから、 class MainActivity : AppCompatActivity(){// ComponentActivity() {

としてMainアクティビティをAppCompatActivityにしておいて

val context = LocalContext.current
    Button(onClick = {
        Log.d("InputScreen", "DataPicker Button clicked")

        (context as AppCompatActivity).let {
            val picker = MaterialDatePicker.Builder.datePicker().build()
            picker.show(it.supportFragmentManager, picker.toString())
            Log.d("InputScreen", "Picker showed")
            picker.addOnPositiveButtonClickListener {
                val dateString = SimpleDateFormat("yyyy-MM-dd").format(Date(it))
                Log.d("InputScreen","picker.selection:${picker.selection} ${dateString}")
            }
        }
    },
        content={ Text(text = ("DatePicker"), color= Color.Red)}
    )

とすればMaterialDatePickerが使える (contextはMainアクティビティ<ーAppCompatActivity()を継承している)

https://stackoverflow.com/questions/67364372/appcompatactivity-instead-of-componentactivity-in-jetpack-compose

通常のは val mYear: Int val mMonth: Int val mDay: Int val now = Calendar.getInstance() mYear = now.get(Calendar.YEAR) mMonth = now.get(Calendar.MONTH) mDay = now.get(Calendar.DAY_OF_MONTH) now.time = Date() val date = remember { mutableStateOf("") } val datePickerDialog = DatePickerDialog( context, { _: DatePicker, year: Int, month: Int, dayOfMonth: Int -> val cal = Calendar.getInstance() cal.set(year, month, dayOfMonth) Log.d(“Datepicked”, “$year $month $dayOfMonth”) //date.value = getFormattedDate(cal.time, “dd MMM,yyy”) }, mYear, mMonth, mDay )

datePickerDialog.show()

日付の変換方法 String dateString = new SimpleDateFormat(“MM/dd/yyyy”).format(new Date(TimeinMilliSeccond));