android - 在另一个 Activity 中检索共享首选项

标签 android sharedpreferences

我想从一个 Activity 中检索一些已保存到共享首选项中的值,并想在另一个 Activity 中调用它。

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

作为示例,我有这个,它保存在首选项中。

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();
        }
    }

}

现在我有另一个 Activity ,我可以在其中使用该值而不是再次输入它:

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) {
                               }
        });
    }

最佳答案

SharedPreference 类的优点之一是它被设计为可用于应用程序中的任何 Activity。您可以通过两个简单的调用检索任何 SharedPreference:

SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
String desiredPreference =  sharedPreferences.getString("NameOfSharedPreference", "DefaultValue");

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

Editor editor = sharedPreferences.edit();
editor.putString("NameOfSharedPreference", "ValueToStore");
editor.commit();

关于android - 在另一个 Activity 中检索共享首选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27994597/

相关文章:

android - 如何删除 android wear 通知中的默认操作(BlockApp)?

android - 等待广播接收器的结果

android - 根据进度取消图像请求 Android - Image loader Volley , Picasso

android - 无法使用 PreferenceActivity 设置首选项

java - 如何在共享首选项中保存 ListView 状态

java - Android Sharedpreferences 传递变量值

android - 以编程方式设置 textCursorDrawable

java - SharedPreferences 不能跨 Activity 工作

android - sharedpreferences 中的 editor.remove() 不删除 key

java - 使用 Mockito 对 SharedPreferences 包装器进行单元测试