重新加载SharedPreferences

时间:2015-09-21 19:21:10

标签: java android

我对Android Prorgramming很陌生,并且在理解SharedPreferences时遇到了问题。 我有一个主要活动和一个设置活动。 我希望能够在“设置活动”中更改SharedPreference(此处称为firstWaitTime),并在“主活动”中使用它。 我可以在设置中设置新值,但在主活动中,我只会在关闭并重新打开应用程序时看到新值。

我想我需要一个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();
            }
        });
}

实现这一目标的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

>> arr = [] => [] >> arr << 1 => [1] >> arr => [1] >> arr << 2 << 3 => [1, 2, 3] 将不会被调用,因为Android尚未杀死该活动。请尝试将代码放在onCreate()中。欲了解更多信息,请阅读the Android Activity lifecycle