問題解決:方法不是兩個引數的onSaveInstanceState,而是onSaveInstanceState(outState: Bundle)
今天在做安卓實驗遇到一個很坑的問題,
在安卓app做橫屏豎屏旋轉時,我們通常需要使用一個方法或者兩個方法來保存資料狀態:
- onSaveInstanceState()
- onRestoreInstanceState()
具體使用例子如下
override fun onSaveInstanceState(outState: Bundle) {
var test = "jinondo is great!"
outState.putString("aaa",test)
super.onSaveInstanceState(outState)
}
保存完狀態用oncreate去取出資料
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
if(savedInstanceState != null){
var test = savedInstanceState?.getString("aaa")
if (test != null) {
Log.v("test",test)
}
}
//...
}
或者使用 onRestoreInstanceState方法取出
override fun onRestoreInstanceState(savedInstanceState: Bundle) {
super.onRestoreInstanceState(savedInstanceState)
val test = savedInstanceState.getString("aaa")
if(test==null)
Log.v("""test is null?""","test is null")
else
Log.v("test is null? N0", test.toString())
}
但是!!!我總是獲取不到那個String資料,一開始在網上博客找相關 onSaveInstanceState 的函式,發現都是 java 的代碼,其實kotlin和java方法一個也差不多,然后就在kotlin打上函式名前幾個字母,重要的是我直接代碼補全了,
onSaveInstanceState(outState: Bundle, outPersistentState: PersistableBundle)
多出了第二個引數,以為是和java略有不同,故沿用這個方法,但操作如痛只有一個引數的多載方法一樣,一直不成功,其實就是方法錯了,正確的只有一個引數,行吧記錄一下踩坑經歷 555
正確方法:
onSaveInstanceState(outState: Bundle)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/172148.html
標籤:其他
上一篇:前端攔截器使用及介紹
下一篇:影片|深入淺析
