我正在尝试在我的应用程序中使用SharedPreferences,我需要一点点因为我刚开始使用它。基本上我想做的事情是:我在主要活动中创建SharedPreference对象,然后在第二个活动中有一个列表视图和点击项我使用putInt();
来放置整数来发送文本。在新活动中我有一个按钮,在adroid系统中添加共享偏好。最后,根据发送到第二个活动的ID,我想在活动编号3中显示不同的文本。
这是一个小代码:
主要活动:
SharedPreferences faves = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
SharedPreferences.Editor editor = faves.edit();
editor.putInt("favorites",0);
editor.commit();
第二项活动:
SharedPreferences favs= PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
final SharedPreferences.Editor editor = favs.edit();
我希望显示文字的第三个活动取决于点击了哪个项目:
favs.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
editor.putInt("favorites", getIntent().getIntExtra("id", 0));
}
});
有任何建议如何解决?
答案 0 :(得分:0)
您实际上不必创建自己的SharedPreference对象,即api Activity.getSharedPreference(name,mode)就可以了。
基本上它的作用是在你应用程序自己的文件夹下创建一个xml文件,每个put ...()都会在xml中添加一个项目,以便你以后可以更新和阅读,你只需要给出正确的名。
拥有一个全局编辑器是一个坏主意,有时它可能会丢失你的数据,所以每次你想读/写sharedPreference时都要得到一个编辑器。
答案 1 :(得分:0)
好的,首先很难理解这个问题。在示例代码中,您尝试将值存储在主活动和第三个活动中,但似乎没有读取值。然后在最后你问“任何建议如何解决这个问题?” “那个”代表什么?您是否收到错误或您不期望的结果?这是我使用的一些示例代码。我有一个静态的Constants类,我在应用程序的其他部分重用了一些值,但你明白了。
ApplicationContext context = ApplicationContext.getInstance(); //I use a custom app context but any context will do.
SharedPreferences prefs = context.getSharedPreferences(
Constants.PREFS_FILE_NAME, Activity.MODE_PRIVATE);
prefs.getString("favorites", null);//or any other getter you want to use