Запоминание для Object Price() в компоновке реактивного ранца теряет значение после выбора изображения, в то время как RAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Запоминание для Object Price() в компоновке реактивного ранца теряет значение после выбора изображения, в то время как R

Сообщение Anonymous »

В Jetpack Compose переменные, объявленные с помощью Remember {mutableStateOf() }, теряют свои значения после выбора изображения из галереи. Я также пробовал использовать RememberSaveable {mutableStateOf() }, но новые значения по-прежнему не сохранялись после выбора изображения.
Есть ли способ сохранить обновленные значения цены и других цен после выбора изображение?

Код: Выделить всё

@Composable
fun DisplayProductInfo() {
// Using `mutableStateOf` for state tracking
var price: Price? by remember { mutableStateOf(null) }
var otherPrice: Price? by remember { mutableStateOf(null) }
var pickedImageUri: Uri by remember { mutableStateOf(Uri.EMPTY) }

// Reference to the Firebase database
val ref = Firebase.database.getReferenceFromUrl("productReferenceUrl")

// Firebase event listener
val eventListener = object : ValueEventListener {
override fun onDataChange(snapshot: DataSnapshot) {
if (snapshot.exists()) {
val product = snapshot.getValue(Product::class.java)
price = product?.price
otherPrice = product?.unitOtherPrice
}
}

override fun onCancelled(error: DatabaseError) {
// Handle the error appropriately
Log.e("FirebaseError", "Database read cancelled: ${error.message}")
}
}

// Attach the Firebase listener
LaunchedEffect(Unit) {
ref.addValueEventListener(eventListener)
}

// Image picker
val pickImageResult = rememberLauncherForActivityResult(
contract = ActivityResultContracts.PickVisualMedia()
) { uri: Uri? ->
uri?.let {
pickedImageUri = it
}
}

// Triggering the image picker
Button(onClick = { pickImageResult.launch(PickVisualMediaRequest(ActivityResultContracts.PickVisualMedia.ImageOnly)) }) {
Text(text = "Pick Image")
}

// Displaying values for testing purposes
Text(text = "Price: ${price?.toString() ?: "Not Available"}")
Text(text = "Other Price: ${otherPrice?.toString() ?: "Not Available"}")
Text(text = "Picked Image URI: ${pickedImageUri}")
}
Я объявил значение val, представляющее экземпляр класса Price. После этого я получил данные из базы данных Firebase Realtime и присвоил этому значению соответствующие значения. Я ожидал, что данные сохранятся с помощью Remember или RememberSaveable, но этого не произошло. Значения сбрасываются или меняются, когда я выбираю изображение из галереи.

Подробнее здесь: https://stackoverflow.com/questions/793 ... fter-image
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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