Jam.java
editText=(EditText) findViewById(R.id.userNameEditText1);
button=(Button) findViewById(R.id.enterButton1);
sharedPreferences=getSharedPreferences(SHARED_NAME_STRING1, MODE_PRIVATE);
String userNameString=sharedPreferences.getString(USER_NAME_STRING1, "");
editText.setText(userNameString);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(Jam.this, MainActivity.class);
intent.putExtra("user", string);
SharedPreferences.Editor editor=sharedPreferences.edit();
editor.putString(USER_NAME_STRING1, string);
editor.commit();
startActivity(intent);
}
});
FragA.java
tvs.setText(getActivity().getIntent().getStringExtra(Jam.USER_NAME_STRING1)+" logged in");
在这里,您可以看到我使用intent传递了共享首选项的值, 但我想要另一种方法来获取我在另一个活动或片段中创建的共享偏好的值,如何?
答案 0 :(得分:1)
您可以使用intent将小数据发送到其他活动,如下所示:
Intent intent=new Intent(Login.this, MainActivity.class);
intent.putExtra("user", userName);
startActivity(intent);
您可以像这样得到这个意图值:
活动:
String uName = getIntent.getStringExtra("user");
SharedPreferences对于任何地方的商店数据都很有用,可以从任何地方访问它。您也可以使用共享首选项。但是,不要混淆这两件事。如果您想要将用户名访问应用程序中的多个位置,则可以使用共享首选项。
共享首选项示例:
使用以下方式存储数据:
SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", MODE_PRIVATE);
Editor editor = pref.edit();
editor.putBoolean("key_name1", true); // Saving boolean - true/false
editor.putInt("key_name2", "int value"); // Saving integer
editor.putFloat("key_name3", "float value"); // Saving float
editor.putLong("key_name4", "long value"); // Saving long
editor.putString("key_name5", "string value"); // Saving string
// Save the changes in SharedPreferences
editor.commit(); // commit changes
检索数据:
SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", MODE_PRIVATE);
pref.getBoolean("key_name1", null); // getting boolean
pref.getInt("key_name2", null); // getting Integer
pref.getFloat("key_name3", null); // getting Float
pref.getLong("key_name4", null); // getting Long
pref.getString("key_name5", null); // getting String
如果要将其设置为文本视图,请使用:
tvs.setText(pref.getString("key_name5", null));
答案 1 :(得分:0)
首先启动sharedPreferences
tvs.setText(sharedPreferences.getString(USER_NAME_STRING1, ""));