亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

如何保存 Android 的可見性

如何保存 Android 的可見性

鴻蒙傳說 2024-01-05 16:30:13
我嘗試保存卡片視圖的可見性狀態,起初我的視圖消失了,但是如果用戶按下按鈕,卡片視圖就會顯示。有人可以幫助我并告訴我如何存儲可見性,我找不到有關此主題的任何內容太感謝了。我嘗試了 shardPrefs 但不起作用@Overrideprotected void onCreate(final Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    cv1= (CardView) findViewById(R.id.cv1);    cv2= (CardView) findViewById(R.id.cv2);    cv3= (CardView) findViewById(R.id.cv3);    cv4= (CardView) findViewById(R.id.cv4);    cv5= (CardView) findViewById(R.id.cv5);    cv6= (CardView) findViewById(R.id.cv6);    cv7= (CardView) findViewById(R.id.cv7);    cv8= (CardView) findViewById(R.id.cv8);    cv9= (CardView) findViewById(R.id.cv9);    AddBar = findViewById(R.id.AddBar);    AddVoorraad =findViewById(R.id.AddVoorraad);    AddBar.setOnClickListener(new View.OnClickListener() {        @Override        public void onClick(View v) {            clickcount = clickcount + 1;            if (clickcount == 1) {                cv1.setVisibility(View.VISIBLE);            }            if (clickcount == 2) {                cv2.setVisibility(View.VISIBLE);            }            if (clickcount == 3) {                cv3.setVisibility(View.VISIBLE);            }            if (clickcount == 4) {                cv4.setVisibility(View.VISIBLE);            }            if (clickcount == 5) {                cv5.setVisibility(View.VISIBLE);            }            if (clickcount == 6) {                cv6.setVisibility(View.VISIBLE);            }            if (clickcount==7 ){                cv7.setVisibility(View.VISIBLE);            }        }    });    AddVoorraad.setOnClickListener(new View.OnClickListener() {        @Override        public void onClick(View v) {            clickcountV=clickcountV+1;            if (clickcountV==1) {                cv8.setVisibility(View.VISIBLE);            }            if (clickcount==2) {                cv9.setVisibility(View.VISIBLE);            }        }    });
查看完整描述

3 回答

?
catspeake

TA貢獻1111條經驗 獲得超0個贊

嘗試根據條件存儲每個CardView內部的可見性。SharedPrefs并在 CardView 初始化期間檢索并設置它們。檢查下面的代碼:


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();

        }


    }

});


查看完整回答
反對 回復 2024-01-05
?
DIEA

TA貢獻1820條經驗 獲得超2個贊

當配置更改(旋轉)時,您可以從 onSaveInstanceState 檢索值,但是當您關閉應用程序(后退按鈕)時,您需要從持久性存儲中檢索狀態,例如共享首選項。



查看完整回答
反對 回復 2024-01-05
?
慕蓋茨4494581

TA貢獻1850條經驗 獲得超11個贊

我不知道你到底嘗試了什么,但如果你想做的只是存儲狀態以供以后使用,你當然可以使用 SharedPreferences 來實現這一點。您可以執行以下操作將狀態保存為表示狀態的字符串:


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");

...

然后根據活動開始時的狀態進行適當的處理。請注意,getString()有一個defValue參數(第二個參數),該參數是首選項不存在時要返回的值。

編輯:您可以選擇將它們存儲為 int,但請注意其中一些常量不是 int??纯催@個就明白我的意思了:https ://developer.android.com/reference/android/view/View


查看完整回答
反對 回復 2024-01-05
  • 3 回答
  • 0 關注
  • 213 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號