2011-06-02 112 views
-1

我一直在关注this教程,我被卡住了。Android共享首选项

public class Main extends Activity { 

    SharedPreferences mPrefs; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     firstRunPreferences(); 

     if(getFirstRun()) 
     { 
      Toast.makeText(Main.this, "firstrun", Toast.LENGTH_SHORT).show(); 
      setRunned(); 
     } 
     else 
     {   
      Toast.makeText(Main.this, "not firstrun", Toast.LENGTH_SHORT).show(); 
     } 

    } 

    public boolean getFirstRun() { 
     return mPrefs.getBoolean("firstRun", true); 
    } 
    public void setRunned() { 
     SharedPreferences.Editor edit = mPrefs.edit(); 
     edit.putBoolean("firstRun", false); 
     edit.commit(); 
    } 
    public void firstRunPreferences() { 
     Context mContext = Main.this.getApplicationContext(); 
     mPrefs = mContext.getSharedPreferences("myAppPrefs", 0); 
    } 

}` 

每当我在Eclipse中运行它时,它会显示“not firstrun”。我想每次重新安装应用程序时都会重置首选项,所以代码有什么问题?据我所知,我曾经看到过一次“头饰战争”。

谢谢

+0

当我更新代码后,我在我的Evo上看到了相同的行为(现在是2.3.3)。另外,1.6模拟器。我不记得以前有过这样的表现。我的代码基本上与您的代码相同 – alienjazzcat 2011-06-22 23:57:52

回答

2

我假设你正在使用模拟器来运行你的应用程序。你是否在运行之间关闭模拟器?

检查您是否在Eclipse的调试运行配置的Target选项卡中打勾了“擦除用户数据”复选框。

+0

这没有帮助。我必须每次卸载模拟器中的应用程序:( – user781306 2011-06-02 16:14:40

0

SharedPreferences不会被卸载清除。

如果您想在重新安装后清理某些东西,请在数据库中放入一个字段。

斯特凡

+1

是的,它们通过卸载进行清理。 – user781306 2011-06-02 16:15:11

0

我不知道,但我认为SharedPreferences被删除卸载时,但没有更新的应用程序时。