Выбор даты создания JetpackAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Выбор даты создания Jetpack

Сообщение Anonymous »

Мне нужен совет по поводу приложения для создания композиций Jetpack, которое я делаю в Android Studio.
Оно очень простое, но я в этом новичок.
Все, что оно делает, — это вычисления на текущую дату, чтобы выплюнуть номер (iPin). Это работает.
Он также вызывает выбор даты, чтобы вы могли выполнить те же вычисления для будущей или прошлой даты. Средство выбора даты работает и отображает новые данные (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
}
Я не могу понять, как заставить его повторить расчет (sPin) при выборе даты.
Я хочу, чтобы spin обновлялся одновременно с mDate.value .
Я пробовал переместить вызов функции CalcPin после val mDatePickerDialog. Я также переместил его непосредственно перед Text(text = "Selected Number: ${sPin}",, но нет удачи.

Подробнее здесь: https://stackoverflow.com/questions/784 ... ate-picker
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»