3 回答

TA貢獻(xiàn)1111條經(jīng)驗(yàn) 獲得超0個(gè)贊
嘗試根據(jù)條件存儲(chǔ)每個(gè)CardView內(nèi)部的可見性。SharedPrefs并在 CardView 初始化期間檢索并設(shè)置它們。檢查下面的代碼:
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
int isVisible = sharedPreferences.getInt("cv1", View.GONE);
cv1.setVisibility(isVisible);
isVisible = sharedPreferences.getInt("cv2", View.GONE);
cv2.setVisibility(isVisible);
isVisible = sharedPreferences.getInt("cv3", View.GONE);
cv3.setVisibility(isVisible);
isVisible = sharedPreferences.getInt("cv4", View.GONE);
cv4.setVisibility(isVisible);
isVisible = sharedPreferences.getInt("cv5", View.GONE);
cv5.setVisibility(isVisible);
isVisible = sharedPreferences.getInt("cv6", View.GONE);
cv6.setVisibility(isVisible);
isVisible = sharedPreferences.getInt("cv7", View.GONE);
cv7.setVisibility(isVisible);
isVisible = sharedPreferences.getInt("cv8", View.GONE);
cv8.setVisibility(isVisible);
isVisible = sharedPreferences.getInt("cv9", View.GONE);
cv9.setVisibility(isVisible);
AddBar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
clickcount = clickcount + 1;
if (clickcount == 1) {
cv1.setVisibility(View.VISIBLE);
sharedPreferences.edit().putInt("cv1", View.VISIBLE).commit();
}
if (clickcount == 2) {
cv2.setVisibility(View.VISIBLE);
sharedPreferences.edit().putInt("cv2", View.VISIBLE).commit();
}
if (clickcount == 3) {
cv3.setVisibility(View.VISIBLE);
sharedPreferences.edit().putInt("cv3", View.VISIBLE).commit();
}
if (clickcount == 4) {
cv4.setVisibility(View.VISIBLE);
sharedPreferences.edit().putInt("cv4", View.VISIBLE).commit();
}
if (clickcount == 5) {
cv5.setVisibility(View.VISIBLE);
sharedPreferences.edit().putInt("cv5", View.VISIBLE).commit();
}
if (clickcount == 6) {
cv6.setVisibility(View.VISIBLE);
sharedPreferences.edit().putInt("cv6", View.VISIBLE).commit();
}
if (clickcount==7 ){
cv7.setVisibility(View.VISIBLE);
sharedPreferences.edit().putInt("cv7", View.VISIBLE).commit();
}
}
});
AddVoorraad.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
clickcountV=clickcountV+1;
if (clickcountV==1) {
cv8.setVisibility(View.VISIBLE);
sharedPreferences.edit().putInt("cv8", View.VISIBLE).commit();
}
if (clickcountV==2) {
cv9.setVisibility(View.VISIBLE);
sharedPreferences.edit().putInt("cv9", View.VISIBLE).commit();
}
}
});

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超2個(gè)贊
當(dāng)配置更改(旋轉(zhuǎn))時(shí),您可以從 onSaveInstanceState 檢索值,但是當(dāng)您關(guān)閉應(yīng)用程序(后退按鈕)時(shí),您需要從持久性存儲(chǔ)中檢索狀態(tài),例如共享首選項(xiàng)。

TA貢獻(xiàn)1850條經(jīng)驗(yàn) 獲得超11個(gè)贊
我不知道你到底嘗試了什么,但如果你想做的只是存儲(chǔ)狀態(tài)以供以后使用,你當(dāng)然可以使用 SharedPreferences 來實(shí)現(xiàn)這一點(diǎn)。您可以執(zhí)行以下操作將狀態(tài)保存為表示狀態(tài)的字符串:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences();
SharedPreferences.Editor editor = prefs.edit();
editor.putString("cv1_visibility", "VISIBLE");
editor.putString("cv2_visibility", "INVISIBLE");
editor.putString("cv3_visivility", "GONE");
...
editor.commit();
然后你可以像這樣讀取這些值:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences();
String cv1_state = prefs.getString("cv1_visibility", "NOT_FOUND");
String cv2_state = prefs.getString("cv2_visibility", "NOT_FOUND");
String cv3_state = prefs.getString("cv3_visibility", "NOT_FOUND");
...
然后根據(jù)活動(dòng)開始時(shí)的狀態(tài)進(jìn)行適當(dāng)?shù)奶幚怼U?qǐng)注意,getString()有一個(gè)defValue參數(shù)(第二個(gè)參數(shù)),該參數(shù)是首選項(xiàng)不存在時(shí)要返回的值。
編輯:您可以選擇將它們存儲(chǔ)為 int,但請(qǐng)注意其中一些常量不是 int??纯催@個(gè)就明白我的意思了:https ://developer.android.com/reference/android/view/View
添加回答
舉報(bào)