2011-06-02 227 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被刪除卸載時,但沒有更新的應用程序時。