在另一个 activity 中检索共享首选项
Retrieving sharedpreferences in another 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
class 的优点之一是它被设计为可用于您应用程序中的任何 Activity
。您可以通过两个简单的调用检索任何 SharedPreference
:
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
String desiredPreference = sharedPreferences.getString("NameOfSharedPreference", "DefaultValue");
虽然这看起来很明显,但在尝试检索数据之前,请确保您已实际创建并存储了要保存的数据。要继续上面的示例,请使用以下代码片段将您的数据存储到 SharedPreferences
:
Editor editor = sharedPreferences.edit();
editor.putString("NameOfSharedPreference", "ValueToStore");
editor.commit();
您可以从您的任何 activity 应用调用 "PreferenceManager.getDefaultSharedPreferences(context)"。
我认为您的代码有误:输入 "editText.setText(weight)" 而不是 editText.setText(name);
我想从一个 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
class 的优点之一是它被设计为可用于您应用程序中的任何 Activity
。您可以通过两个简单的调用检索任何 SharedPreference
:
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
String desiredPreference = sharedPreferences.getString("NameOfSharedPreference", "DefaultValue");
虽然这看起来很明显,但在尝试检索数据之前,请确保您已实际创建并存储了要保存的数据。要继续上面的示例,请使用以下代码片段将您的数据存储到 SharedPreferences
:
Editor editor = sharedPreferences.edit();
editor.putString("NameOfSharedPreference", "ValueToStore");
editor.commit();
您可以从您的任何 activity 应用调用 "PreferenceManager.getDefaultSharedPreferences(context)"。
我认为您的代码有误:输入 "editText.setText(weight)" 而不是 editText.setText(name);