2011-09-21 61 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