2015-09-21 69 views
0

我對Android Prorgramming很陌生,並且對SharedPreferences有個問題。 我有一個主要活動和一個設置活動。 我希望能夠在設置活動中更改SharedPreference(這裏稱爲firstWaitTime),並在主活動中使用它。 我可以在設置中設置新值,但在主活動中,當我關閉並重新打開應用程序時,我只能看到新值。重新加載SharedPreferences

我想我會需要一個OnPrefrenceChanged Listender,但我不知道如何實現它?

主要的一個是這樣的:

public class MainActivity extends ActionBarActivity { 
 

 
    //Radio Button 
 
    private int stufe; 
 

 
    @Override 
 
    protected void onCreate(Bundle savedInstanceState) { 
 
     super.onCreate(savedInstanceState); 
 
     setContentView(R.layout.activity_main); 
 

 

 
     SharedPreferences settings = this.getSharedPreferences("settings", Context.MODE_PRIVATE); 
 
     int firstWaitTime = settings.getInt("firstWaitTime", 12); 
 
     int secondWaitTime = settings.getInt("secondWaitTime", 8); 
 
     int thirdWaitTime = settings.getInt("thirdWaitTime", 6); 
 

 
     //TEST 
 
     final TextView test = (TextView) findViewById(R.id.test); 
 
     test.setText("" + firstWaitTime); 
 

 
}

設置活動如下所示:

@Override 
 
    protected void onCreate(Bundle savedInstanceState) { 
 
     super.onCreate(savedInstanceState); 
 
     setContentView(R.layout.activity_settings); 
 

 
final SharedPreferences settings = this.getSharedPreferences("settings", MODE_PRIVATE); 
 

 
//BUTTON 
 

 
     final EditText edit1 = (EditText) findViewById(R.id.edit1); 
 
     Button save=(Button) findViewById(R.id.savebtn); 
 

 
     save.setOnClickListener(new View.OnClickListener() { 
 

 
      @Override 
 
      public void onClick(View v) { 
 

 
       //prefs = getSharedPreferences(prefName, MODE_PRIVATE); 
 
       //SharedPreferences.Editor editor = prefs.edit(); 
 
       SharedPreferences.Editor editor = settings.edit(); 
 

 
       //---save the values in the EditText view to preferences--- 
 
       editor.putInt("firstWaitTime", Integer.parseInt(edit1.getText().toString())); 
 

 
       //---saves the values--- 
 
       editor.commit(); 
 

 
       Toast.makeText(getBaseContext(), "Saved", Toast.LENGTH_SHORT).show(); 
 
      } 
 
     }); 
 
}

什麼是實現這一目標的最佳途徑?

+2

活動的'onResume'再次獲得共享首選項值 – tyczj

回答

2

onCreate()將不會被調用,因爲Android沒有殺死Activity。請嘗試將代碼改爲onResume()。欲瞭解更多信息,請閱讀the Android Activity lifecycle

+0

謝謝,所以我將不得不在onResume中的onCreate中插入完整的代碼,如果我理解這個權利....我會嘗試 – slashy

+0

好的它的工作原理,但沒有改變的聽衆會更好? – slashy