第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么在關(guān)閉并重新打開 Dialog Fragment 后仍保留對象列表的值?

為什么在關(guān)閉并重新打開 Dialog Fragment 后仍保留對象列表的值?

浮云間 2021-09-29 10:37:28
我正在 Android 中構(gòu)建一個國家/地區(qū)選擇器對話框片段,在分段回收器視圖中顯示國家/地區(qū)列表。第一部分顯示收藏夾,第二部分顯示其余國家/地區(qū)。每個條目都顯示了國家名稱和一顆星星。通過單擊星號,該國家/地區(qū)將從非最喜歡的部分移動到最喜歡的部分,反之亦然。盡管我找到了一種解決方法,但我想了解 Country 對象列表中持久值的原因。首先,我在一個單獨的類中有一個國家對象列表:國家.javapublic class Country {private String mCountryId;private String mName;private int mResourceId;private boolean mIsFavourite;public static final Country[] countries = {        new Country("4", "Afghanistan", R.drawable.zafghanistan, false),        new Country("8", "Albania", R.drawable.zalbania, false),        new Country("12", "Algeria", R.drawable.zalgeria, false),        new Country("20", "Andorra", R.drawable.zandorra, false),        new Country("24", "Angola", R.drawable.zangola, false),        new Country("28", "Antigua and Barbuda", R.drawable.zantigua_and_barbuda, false),};public Country(String countryId, String name, int resourceId, boolean isFavourite) {    mCountryId = countryId;    mName = name;    mResourceId = resourceId;    mIsFavourite = isFavourite;}public String getmCountryId () {    return mCountryId;}public String getmName() {    return mName;}public int getmResourceId() {    return mResourceId;}public boolean getmIsFavourite() {    return mIsFavourite;}public void setmIsFavourite(boolean mIsFavourite) {    this.mIsFavourite = mIsFavourite;}public static List<Country> createCountryList() {    List<Country> countriesArrayList = new ArrayList<>(Arrays.asList(countries));    return countriesArrayList;}}country 對象的最后一個值是一個布爾值,用于存儲該國家/地區(qū)是否受歡迎。我使用這個值來避免不斷查詢本地數(shù)據(jù)庫。在我的對話片段中,您可以看到我在開頭初始化了國家/地區(qū)列表,即它獲取 Country 類的所有值,這意味著一開始沒有一個國家是最喜歡的。后來我用存儲在數(shù)據(jù)庫中的收藏夾更新了它,但它工作正常。我不明白的是以下觀察結(jié)果:假設(shè)我有 5 個最喜歡的國家/地區(qū),我通過在片段外部單擊來關(guān)閉對話框片段。然后我重新打開對話框片段,國家列表應(yīng)該再次初始化。至少我對 !=null 的檢查表明此時 List 尚未初始化。然后初始化countries = Country.createCountryList();再次發(fā)生。這意味著所有喜歡的布爾值都應(yīng)該是假的,就像第一次打開對話框片段一樣。然而,那些最受歡迎的國家顯示布爾值真!這怎么可能?如果片段將保留成員變量,則國家列表應(yīng)該已經(jīng)在我檢查時初始化,但事實并非如此。值是否存儲在另一個列表或磁盤上?
查看完整描述

2 回答

?
莫回?zé)o

TA貢獻1865條經(jīng)驗 獲得超7個贊

國家/地區(qū)數(shù)組是靜態(tài)的,您必須檢查您的代碼中是否沒有以某種方式將其設(shè)置為 true ......

public?static?final?Country[]?countries?...

我認為最好的解決方案是從您的國家/地區(qū)數(shù)組中創(chuàng)建一個克隆...


查看完整回答
反對 回復(fù) 2021-09-29
?
烙印99

TA貢獻1829條經(jīng)驗 獲得超13個贊

假設(shè)任何沒有將 Country 設(shè)置為最喜愛的代碼的代碼都是徒勞的。

但我仍然認為你有一個 country[] 類的靜態(tài)對象,它為你的列表保留了持久值。


查看完整回答
反對 回復(fù) 2021-09-29
  • 2 回答
  • 0 關(guān)注
  • 306 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號