2015-09-21 44 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