2011-09-21 60 views
0

我收到一些奇怪的影響後,我強制關閉我的應用程序。當完成()關閉應用程序時,一切都很好。我有一些變量保存在sharedPreferences中,所以當應用程序再次加載時,它可以將這些變量恢復到UI中。但是,如果我強制關閉應用程序,然後嘗試繼續它停止的地方,一些變量開始「行事滑稽」。我的意思是(在的onCreate)我檢查,看是否有串,從sharedPreferences加載,等於一個值(嘎吱嘎吱縮小版本):Android:SharedPreference錯誤強制關閉後

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

} 

這裏會發生什麼事是namec,的確在實際上等於「森林」。我將該值發送到日誌,並且它完全按照它應該顯示的變量(「forest」)。但是它不會運行if中的代碼。它給了我惡夢。我一直堅持這一個星期!

在相同的代碼中,我加載了一組不同的sharedPreferences(標記爲TRHprefs),並且這些(6個整數和3個字符串)中的每一個加載並顯示得很好。我甚至添加了一個if {}來測試TRHprefs中的1個字符串和1個整數......它們都返回true。

問題1:是否有任何事情可以導致我的sharedPreferences xml在關閉的時候以某種方式變爲損壞?

問題2:在使用force close來幫助調試情況之前和之後,是否有方法可以查看xml文件。非常感謝!

回答

1

它是一個字符串。如果要比較兩個字符串

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

真的嗎?過去一週,我一直在清理,更改,移動和刮取我的代碼......而且這一次我只是在檢查字符串「不正確」的方式......哇,我有很多東西需要學習。謝謝! – cerealspiller

1

您需要使用此:試試這個

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

是的,就是這樣......現在工作正常。本來會接受你的答案的,但是費米打敗你。再次感謝! – cerealspiller