检索另一个活动中的共享偏好

use*_*002 1 android sharedpreferences

我想从一个活动中检索已保存到共享偏好的一些值,并希望在另一个活动中调用它.

基本上我如何从第一个活动中获取名称并自动在第二个活动的字段中显示它?

所以作为一个例子我有这个,它保存在首选项中.

public class Settings extends Activity {
    EditText editText;
    Button button;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.settings);
        editText = (EditText) findViewById(R.id.editText);
        button = (Button) findViewById(R.id.button);
        button.setOnClickListener(new Button_Clicker());
        loadSavedPreferences();

    }
    private void loadSavedPreferences() {
        SharedPreferences sharedPreferences = PreferenceManager
                .getDefaultSharedPreferences(this);

        String name = sharedPreferences.getString("name", "Your Name");
        editText.setText(name);

    }

    private void savePreferences(String key, String value) {
        SharedPreferences sharedPreferences = PreferenceManager
                .getDefaultSharedPreferences(this);
        Editor editor = sharedPreferences.edit();
        editor.putString(key, value);
        editor.commit();
    }

    class Button_Clicker implements Button.OnClickListener {
        public void onClick(View v) {

            savePreferences("name", editText.getText().toString());
            finish();
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

现在我有另一个活动,我可以使用该值而不是再次输入:

public class Details extends Activity {

    EditText nameText;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.details);
        nameText = (EditText) findViewById(R.id.nameText);


        Button button = (Button) findViewById(R.id.calculate);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                               }
        });
    }
Run Code Online (Sandbox Code Playgroud)

Wil*_*lis 5

SharedPreference课程的一个好处是它被设计为适用Activity于您的任何应用程序.你可以SharedPreference用两个简单的调用来检索任何一个

SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
String desiredPreference =  sharedPreferences.getString("NameOfSharedPreference", "DefaultValue");
Run Code Online (Sandbox Code Playgroud)

虽然看起来很明显,但在尝试检索之前,请确保已实际创建并存储了要保存的数据.要继续上面的示例,请使用以下代码段将数据存储到SharedPreferences:

Editor editor = sharedPreferences.edit();
editor.putString("NameOfSharedPreference", "ValueToStore");
editor.commit();
Run Code Online (Sandbox Code Playgroud)