簡體   English   中英

SharedPrefenrences不存儲布爾值

[英]SharedPrefenrences not storing boolean value

我正在嘗試將布爾FAVORITE數據保存在sharedPreferences中。 當手機旋轉或關閉時。它不起作用,它使用的是默認值。 我不知道這段代碼有什么問題。 我無法弄清楚問題出在哪里,有人可以向我展示代碼問題嗎?

//Context context =this;

 String FAVOURITE = "selected";

boolean favourite = false;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if(savedInstanceState!=null){
        favourite = savedInstanceState.getBoolean(FAVOURITE,false);
        Toast.makeText(this,""+favourite,Toast.LENGTH_SHORT).show();

    }

    final Bundle queryBundle = new Bundle();

    movieObject=(CardsClass)getIntent().getSerializableExtra("movieObject");

    setTitle(movieObject.getmTitle());

    setContentView(R.layout.activity_details);

    final ImageView fav = (ImageView)findViewById(R.id.fav);

    fav.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            if (favourite == false) {

                favourite = true;

                fav.setImageResource(R.drawable.fav_on);

                Toast.makeText(DetailsActivity.this, favourite + " is added to favourites", Toast.LENGTH_SHORT).show();

                queryBundle.putBoolean(FAVOURITE,favourite);

            }

            else if(favourite){

                favourite=false;

                fav.setImageResource(R.drawable.fav_off);

                queryBundle.putBoolean(FAVOURITE,favourite);

                Toast.makeText(DetailsActivity.this, movieObject.getmTitle() + " is removed from favourites", Toast.LENGTH_SHORT).show();


            }
        }
    });

實際上,您做錯了事。 您應該執行以下操作:

@Override
protected void onSaveInstanceState(Bundle outState) {
    outState.putBoolean(FAVOURITE, favorite); // then you can check the favorite value in onCreate as well.
    super.onSaveInstanceState(outState);
}

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
    this.favorite = savedInstanceState.getBoolean(FAVOURITE);
    // do something here when restore.
    super.onRestoreInstanceState(savedInstanceState);
}

寫入或讀取SharedPreferences

寫:

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putBoolean(FAVORITE, favorite);
editor.commit();

讀:

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
Boolean favorite = sharedPref.getBoolean(FAVORITE, true);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM