Android: SharedPreference errors after force close

拥有回忆 提交于 2020-01-07 05:39:18

问题


I'm getting some weird effects after I force close my app. When the app is closed with finish(), everything is fine. I have some variables saved in a sharedPreferences so when the app is loaded again, it can restore those variables into the UI. However, if I force close the app and THEN try to continue where it had left off, some variables start "acting funny". By that I mean (in onCreate) I check to see if a string, loaded from the sharedPreferences, equals a value (crunched down version):

String namec;
private static final String TAG = "MyActivity";

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

    //namec was set as "forest" in a previous activity
    //which is bypassed if the user selects continue
    //from the main menu
    SharedPreferences pathtaken = getSharedPreferences("pathtakenpref", MODE_WORLD_READABLE);
    namec = pathtaken.getString("namec", "Unknown");

    ImageView v1 = (ImageView) findViewById(R.id.pathpic1);
    RelativeLayout v2 = (RelativeLayout) findViewById(R.id.pathmain);

    Log.i(TAG, "namec= " + namec);
    if(namec == "forest"){
        v1.setImageResource(R.drawable.forest);
        v2.setBackgroundResource(R.drawable.forestrepeat);
    }

}

What happens here is namec, does in fact, equal "forest". I send the value to the log and it shows the variable exactly as it should be ("forest"). Yet it won't run the code inside of the if{}. It's giving me nightmares. I've been stuck on this for a week!

In the same code, I load a different set of sharedPreferences (labeled as TRHprefs) and each one of those (6 integers and 3 strings) load up and display just fine. I even add an if{} to test 1 string and 1 integer from TRHprefs... they both came back true.

Q.1: Is there anything that can cause my sharedPreferences xml to become, somehow, corrupted on a force close?

Q.2: Is there a way for me to view the xml file before and after I use force close to help debug the situation. Thanks so much!


回答1:


Its a String. Try this:

if("forest".equals(namec)){



回答2:


If you want to compare two String you need to use this:

if(namec.equals("forest")){
        v1.setImageResource(R.drawable.forest);
        v2.setBackgroundResource(R.drawable.forestrepeat);
    }


来源:https://stackoverflow.com/questions/7503625/android-sharedpreference-errors-after-force-close

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!