關於RadioGroup中的radiobutton選中狀態儲存的問題!!
阿新 • • 發佈:2019-02-14
最近被RaioGroup這個控制元件給煩的不行,在多個activity之間跳轉的時候,會失去radiobutton的選擇狀態,那麼如何進行儲存當前的選中狀態呢?想到用sharedpreference來記錄選中項,在oncreate()的時候;
取出狀態並且setchecked(true),這不失為一種方法。
可是當我真正去操作是卻還是碰到了很多問題?
首先在`new OnCheckedChangeListener() {
@Override public void onCheckedChanged(RadioGroup group, int checkedId) {}`
時傳入了兩個引數,要注意的一點是,這個checkedId並不是選中radiobutton的索引而是選中的radiobutton的ID值,這個時候,我們用shapre進行儲存這個Id值,然後根據這個id值那麼我們就可以找到,被選中的radiobutton了,然後radiobutton.setchecked(true),這樣就可以了?
可是我碰到了第一個問題,這個id值居然是不斷增長的?那麼為什麼呢?
後來發現在我們用程式setchecked(true)的同時,也仍然觸發了checkedchangelistner()這個方法,所以當我們手動變更和程式變更時,這個方法被連續呼叫了兩次。
所以關鍵的來了我們需要在XML檔案中,指定幾個radiobutton的id值,也就是@+id/???,並且在再java檔案中radiobutton.setId();把id寫死,這樣就可以保證id不會變化,這樣我們就可以根據所獲得的的ID值來設定選中狀態,這樣就可以儲存住狀態了!