Thank you all for your advice! But I solved this problem! Hope this helps someone, here is the solution.
Before requesting the value of SharedPreferences, check the availability of keys !!!
SharedPreferences sharedpreferences = getSharedPreferences ("SharedPreferences", MODE_PRIVATE); sharedpreferences.contains ("key") --- check the key!
favoriteButton = (ImageView) findViewById(R.id.favorite_button); SharedPreferences favorite = getSharedPreferences("Favorites", MODE_PRIVATE); String tempFav = ""; if(favorite.contains(""+Loader.currentVideo.getTitle()+"")) { tempFav = favorite.getString(""+Loader.currentVideo.getTitle()+"", ""); } if(tempFav.equalsIgnoreCase("true")) { favoriteButton.setImageDrawable(getResources().getDrawable(R.drawable.fav_selected)); } else { favoriteButton.setImageDrawable(getResources().getDrawable(R.drawable.fav_empty)); } favoriteButton.setOnClickListener(new OnClickListener() { public void onClick(View v) { SharedPreferences favorite = getSharedPreferences("Favorites", MODE_PRIVATE); SharedPreferences.Editor editor = favorite.edit(); String tempCFav = ""; if(favorite.contains(""+Loader.currentVideo.getTitle()+"")) { tempCFav = favorite.getString(""+Loader.currentVideo.getTitle()+"", ""); Log.d(Loader.currentVideo.getTitle()); Log.d(tempCFav); } if(tempCFav.equals("true")) { favoriteButton.setImageDrawable(getResources().getDrawable(R.drawable.fav_empty)); Loader.favoriteVideos.remove(Loader.currentVideo); editor.remove(""+Loader.currentVideo.getTitle()+""); } else { favoriteButton.setImageDrawable(getResources().getDrawable(R.drawable.fav_selected)); Loader.favoriteVideos.add(Loader.currentVideo); editor.putString(""+Loader.currentVideo.getTitle()+"", "true"); } editor.commit(); } });
source share