Android 正在另一个活动中检索SharedReference

Android 正在另一个活动中检索SharedReference,android,sharedpreferences,Android,Sharedpreferences,我想从一个活动中检索我保存到SharedReferences的一些值,并在另一个活动中调用它 基本上,如何从第一个活动中获取名称并在第二个活动的字段中自动显示 我举了一个例子,它保存到首选项中 public class Settings extends Activity { EditText editText; Button button; @Override public void onCreate(Bundle savedInstanceState) {

我想从一个活动中检索我保存到SharedReferences的一些值,并在另一个活动中调用它

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

我举了一个例子,它保存到首选项中

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

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

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

SharedReference
类的一个优点是,它被设计为可供应用程序中的任何
活动使用。您可以通过两个简单调用检索任何
SharedReference

SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
String desiredPreference =  sharedPreferences.getString("NameOfSharedPreference", "DefaultValue");
虽然看起来很明显,但在尝试检索之前,请确保您确实创建并存储了要保存的数据。要继续上面的示例,请使用以下代码段将数据存储到
SharedReferences

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

SharedReference
类的一个优点是,它被设计为可供应用程序中的任何
活动使用。您可以通过两个简单调用检索任何
SharedReference

SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
String desiredPreference =  sharedPreferences.getString("NameOfSharedPreference", "DefaultValue");
虽然看起来很明显,但在尝试检索之前,请确保您确实创建并存储了要保存的数据。要继续上面的示例,请使用以下代码段将数据存储到
SharedReferences

Editor editor = sharedPreferences.edit();
editor.putString("NameOfSharedPreference", "ValueToStore");
editor.commit();
您可以从应用程序的任何活动调用“PreferenceManager.GetDefaultSharedReferences(context)”

我认为您的代码中有一个错误:将“editText.setText(weight)”替换为editText.setText(name)

您可以从应用程序的任何活动调用“PreferenceManager.GetDefaultSharedReferences(context)”


我认为您的代码中有一个错误:将“editText.setText(weight)”替换为editText.setText(name)

共享引用的使用已在本帖中解释:请在此链接中查看我的答案共享引用的使用已在本帖中解释:请在此链接中查看我的答案如何使值显示在特定的文本框中而不会在新活动中出错。例如,我有:nameText=(EditText)findviewbyd(R.id.nameText);如何使存储值显示在此处?这就是我感到困惑的地方。如果不先提交所述数据,就无法从
SharedReferences
检索数据。我修改了我的答案以反映这一点……我确信我通过查看代码将数据保存到了SharedReference。我可以在那个活动中检索和编辑它,但我想在一个新的文本字段中检索和编辑一个新的活动。当我尝试检索它时,我的应用程序崩溃。你应该问“当我尝试从SharedReferences检索值时,为什么我的应用程序崩溃?”当询问有关崩溃的问题时,请始终发布stacktrace。发布stacktrace,以便我们能够缩小问题范围。如何使值显示在特定的文本框中,而不会在新活动中出错。例如,我有:nameText=(EditText)findviewbyd(R.id.nameText);如何使存储值显示在此处?这就是我感到困惑的地方。如果不先提交所述数据,就无法从
SharedReferences
检索数据。我修改了我的答案以反映这一点……我确信我通过查看代码将数据保存到了SharedReference。我可以在那个活动中检索和编辑它,但我想在一个新的文本字段中检索和编辑一个新的活动。当我尝试检索时,我的应用程序崩溃。你应该问“为什么我尝试从SharedReferences检索值时我的应用程序会崩溃?”并在询问有关崩溃的问题时始终发布stacktrace。发布stacktrace以便我们缩小问题范围。关于这一点,我在为我制作的另一个程序使用旧代码。更新了我的帖子,哈哈。我这里的主要问题是如何显示我在文本字段中检索到的数据,比如说我在另一个活动中有一个edittext字段,如何将检索到的数据显示在该字段上。很抱歉,我在为我制作的另一个程序使用旧代码。更新了我的帖子,哈哈。我这里的主要问题是如何在文本字段中显示检索到的数据,比如说,我在另一个活动中有一个edittext字段,如何在其中显示检索到的数据。