簡體   English   中英

onSaveInstance outState 用最后一個 putString 保存所有 state

[英]onSaveInstance outState saving all state with last putString

我正在使用 Activity 我正在使用onSaveInstanceState生命周期

當我嘗試更新時

companion object {
    const val EXTRA_INDEX = "extra_index"
    private const val STATE_COMMENT_NAME = ""
    private const val STATE_COMMENT_COMMENT = ""
}

在 GalleryDetail class with

outState.putString(STATE_COMMENT_NAME, tvCommentName.text.toString())
outState.putString(STATE_COMMENT_COMMENT, tvCommentComment.text.toString())

onSaveInstanceState生命周期內, STATE_COMMENT_NAMEtvCommentComment.text.toString().trim()填充

即使我改變了訂單,例如

outState.putString(STATE_COMMENT_COMMENT, tvCommentName.text.toString().trim())
outState.putString(STATE_COMMENT_NAME, tvCommentComment.text.toString().trim())

反之亦然, STATE_COMMENT_COMMENT將由tvCommentName.text.toString().trim()填充,因此,關鍵是,最后一個 putString 之上的所有內容,都將由 putString 的最后一個值填充

我已經記錄了問題,它告訴我問題出在onSaveInstanceState而不是onCreate或錯誤類型變量以顯示在 UI 上

所以,這是我的代碼日志

2022-08-09 08:14:57.384 27561-27561/com.dicoding.kelassekolah D/GalleryDetail Bundle: onSaveInstanceState Nice photos!
2022-08-09 08:14:57.384 27561-27561/com.dicoding.kelassekolah D/GalleryDetail Bundle: onSaveInstanceState Nice photos!
2022-08-09 08:14:57.519 27561-27561/com.dicoding.kelassekolah D/GalleryDetail Bundle: savedInstanceState Nice photos!
2022-08-09 08:14:57.519 27561-27561/com.dicoding.kelassekolah D/GalleryDetail Bundle: savedInstanceState Nice photos!

onSaveInstanceState要點: https://gist.github.com/amirudev/421d76f671250e015462fa973bb984be

onCreate if savedInstanceState not null要點: https://gist.github.com/amirudev/137d1d74f729de

您應該將這些STATE_COMMENT_NAMESTATE_COMMENT_COMMENT值彼此不相同:

companion object {
    const val EXTRA_INDEX = "extra_index"
    private const val STATE_COMMENT_NAME = "stateCommentName"
    private const val STATE_COMMENT_COMMENT = "stateCommentComment"
}

如果它們相同(例如"" ),則它們是相同的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM