我有一个需要使用共享偏好的项目。我现在只是尝试共享首选项,因此我不是通过意图传递字符串值,而是通过共享首选项传递它。在我的第一个活动中,我有这个:
SharedPreferences prefs = this.getSharedPreferences("com.example.mayankthakur.personalprojecttrial2", Context.MODE_PRIVATE);
Intent nameSave = getIntent();
name = nameSave.getStringExtra("name")
prefs.edit().putString(name, "name").apply();
在我的第二个活动中
SharedPreferences preferences = getSharedPreferences("prefs", Context.MODE_PRIVATE);
name = preferences.getString("name", name);
example.setText(name);
现在,我在第二个活动中只有一个textview,我想显示字符串名称的值。应用程序没有崩溃,但有一个错误。 textview只显示" name"而不是显示字符串名称的值。没有引号。我查了一下,结果发现我需要一个字符串键来获取get string方法和put字符串。所以我想知道字符串键是什么(所以我以后不会遇到这个问题)以及如何在我的代码中解决这个问题。
答案 0 :(得分:0)
在第一个活动中;
SharedPreferences prefs = this.getSharedPreferences("prefs", Context.MODE_PRIVATE);
prefs.edit().putString(name, "name").apply();
在第二项活动中;
SharedPreferences preferences = getSharedPreferences("prefs", Context.MODE_PRIVATE);
name = preferences.getString("name", "");
example.setText(name);
答案 1 :(得分:0)
你只需要扭转它。变化
prefs.edit().putString(name, "name").apply();
到
prefs.edit().putString("name", name).apply();
在共享首选项中,您输入的第一个参数是键,第二个参数是值。 当你得到它时,第一个参数是key,第二个参数是默认值,如果第一个参数键值为null。
name = preferences.getString("name", "default value");
答案 2 :(得分:0)
这里有两处变化..
prefs.edit().putString("name", name).apply();
而不是在getstring中写入名称,你必须传递默认值,所以改变你的代码,
SharedPreferences preferences = getSharedPreferences("prefs",
Context.MODE_PRIVATE);
example.setText(preferences.getString("name",null);
这将解决您的问题
答案 3 :(得分:0)
SharedPreferences prefs = this.getSharedPreferences(" com.example.mayankthakur.personalprojecttrial2",Context.MODE_PRIVATE);
Intent nameSave = getIntent();
name = nameSave.getStringExtra("name")
prefs.edit()。putString(" name",name).apply();
如上所述,您需要进行更改。不同的是"名称"引号是关键名称,简单的变量名称描述" name"的值。键。这将通过" name"中的getStringExtra(" name")设置您获得的值。关键共享偏好。
答案 4 :(得分:0)
试试这段代码:
第一项活动
public static final String MY_PREFS_NAME = "MyPrefsFile";
SharedPreferences.Editor editor = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE).edit();
Intent nameSave = getIntent();
name = nameSave.getStringExtra("name")
Log.d("TEST name = "+name);
editor.putString("name", name);
editor.apply();
第二项活动:
public static final String MY_PREFS_NAME = "MyPrefsFile";
SharedPreferences prefs = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE);
String name = prefs.getString("name", "No name defined");//"No name defined" is the default value.
Log.d("TEST name = "+name);
答案 5 :(得分:0)
你先给出键值然后键值然后给错了。检查下面
而不是这个
prefs.edit().putString(name, "name").apply();
更改为
prefs.edit().putString("name", name).apply();