我正在寻找有关我在Android Studio中开发的Jetpack作曲应用程序的一些建议. 这很简单,但我对此很陌生. 它所做的只是计算当前日期以吐出一个数字(iPin).这有效. 它还调出一个日期 Select 器,以便您可以对future 或过go 的日期进行相同的计算.日期 Select 器可以工作并通过主屏幕上的文本显示新数据(m.Date.Value),但我不知道如何让它重新计算数字(sPin). 我希望sPin与mDate.value同时更新. 谢谢.
@Composable
public fun MyContent(
imagePainter: Painter,
modifier: Modifier = Modifier,
){
// Fetching the Local Context
val mContext = LocalContext.current
// Declaring integer values
// for year, month and day
val mYear: Int
val mMonth: Int
val mDay: Int
// Initializing a Calendar
val mCalendar = Calendar.getInstance()
// Fetching current year, month and day
mYear = mCalendar.get(Calendar.YEAR)
mMonth = mCalendar.get(Calendar.MONTH)
mDay = mCalendar.get(Calendar.DAY_OF_MONTH)
mCalendar.time = Date()
var iPin = calcPin(mDay, mMonth, mYear)
var sPin = 0
// Declaring a string value to
// store date in string format
val mDate = remember { mutableStateOf("") }
// Declaring DatePickerDialog and setting
// initial values as current values (present year, month and day)
val mDatePickerDialog = DatePickerDialog(
mContext,
{ _: DatePicker, mYear: Int, mMonth: Int, mDayOfMonth: Int ->
mDate.value = "$mDayOfMonth/${mMonth+1}/$mYear"
calcPin(mDay, mMonth, mYear).also { sPin = it }
}, mYear, mMonth, mDay
)
Column(modifier = Modifier.fillMaxSize(), verticalArrangement = Arrangement.Center, horizontalAlignment = Alignment.CenterHorizontally) {
Image(
painter = imagePainter,
contentDescription = null,
contentScale = ContentScale.Fit,
modifier = Modifier
.align(alignment = Alignment.CenterHorizontally)
.size(250.dp)
)
// Displaying the mDate value in the Text
Text(text = "Todays Number: ${iPin}", fontSize = 30.sp, textAlign = TextAlign.Center)
// Adding a space of 100dp height
Spacer(modifier = Modifier.size(100.dp))
// Creating a button that on
// click displays/shows the DatePickerDialog
Button(onClick = {
mDatePickerDialog.show()
}, colors = ButtonDefaults.buttonColors(Color(0XFF0F9D58)) ) {
Text(text = "Select Date", color = Color.White)
}
// Adding a space of 50dp height
Spacer(modifier = Modifier.size(50.dp))
// Displaying the mDate value in the Text
Text(text = "Selected Date: ${mDate.value}", fontSize = 30.sp, textAlign = TextAlign.Center)
Text(text = "Selected Number: ${sPin}", fontSize = 30.sp, textAlign = TextAlign.Center)
// Adding a space of 100dp height
Spacer(modifier = Modifier.size(100.dp))
}
}
fun calcPin(d: Int, m: Int, y: Int): Int {
var iResult: Int
iResult = d + m+ y
return iResult
}
我想不出如何让它在 Select 日期时重新计算(sPin).
我希望sPin与mDate.value同时更新.
我曾try 将调用移至val mDatePickerDialog
后的calcPin函数,我也将其移至Text(text = "Selected Number: ${sPin}",
之前,但没有成功.