java基于变量获取特定的SharedReference文件
我正在为桌面RPG制作一个配套应用。基本上,它只是跟踪角色及其发展。目前,我觉得我的主程序包非常混乱,因为每个角色都有自己的SharedReferences文件。我绕过了我不知道的代码,只使用了6个预设字符槽,可以根据用户的需求使用。这需要我将包裹复制5次。看起来是这样的:
在每个类中,我都会得到相应的Pref文件,如下所示:
SharedPreferences pref;
pref = getSharedPreferences("Character1", Context.MODE_PRIVATE);
~~~~~~~~~~~OR~~~~~~~~~~~
pref = getSharedPreferences("Character2", Context.MODE_PRIVATE);
etc.
必要时,我将获取所有角色的pref文件,如下所示:
char1pref = getSharedPreferences("Character1", Context.MODE_PRIVATE);
char2pref = getSharedPreferences("Character2", Context.MODE_PRIVATE);
char3pref = getSharedPreferences("Character3", Context.MODE_PRIVATE);
char4pref = getSharedPreferences("Character4", Context.MODE_PRIVATE);
char5pref = getSharedPreferences("Character5", Context.MODE_PRIVATE);
char6pref = getSharedPreferences("Character6", Context.MODE_PRIVATE);
这在main活动中是必要的,我在按钮上显示字符的名称,而不是预设的Character 1
、Character 2
等
到目前为止,这还不是一个问题。在未来(在我推出一个大规模的UI更新之后),将有一个创建角色按钮,它将在单击时创建这些类和pref文件。所以,我的问题是,我不知道如何在一个类中为每种类型处理这个问题;IE ArmorStatsSP.java
将是装甲统计的唯一类,抓取的pref文件将取决于用户当前查看的角色
所以,我的问题是:如何根据用户正在查看的当前角色获取某个SharedReferences文件;也就是说,如果用户正在查看character 2,则会为Pref数据获取character2文件。如果他们正在查看character1,character1文件将被提取,等等
在每个Pref文件中,密钥在整个文件中共享相同的名称;IE name
in Character1
也是name
in Character2
等等
我看到两种可能的解决方案:
1.)像我在MainActivity中那样,为每个Pref文件声明不同的名称:
char1pref = getSharedPreferences("Character1", Context.MODE_PRIVATE);
char2pref = getSharedPreferences("Character2", Context.MODE_PRIVATE);
char3pref = getSharedPreferences("Character3", Context.MODE_PRIVATE);
char4pref = getSharedPreferences("Character4", Context.MODE_PRIVATE);
char5pref = getSharedPreferences("Character5", Context.MODE_PRIVATE);
char6pref = getSharedPreferences("Character6", Context.MODE_PRIVATE);
然后,根据int position
(字符号)为这些设置一个开关
@Override
public void prefSelector(int position) {
switch(position){
case 0:
char1pref = getSharedPreferences("Character1", Context.MODE_PRIVATE);
break;
case 1:
char2pref = getSharedPreferences("Character2", Context.MODE_PRIVATE);
break;
case 2:
char3pref = getSharedPreferences("Character3", Context.MODE_PRIVATE);
break;
default:
char4pref = getSharedPreferences("Character4", Context.MODE_PRIVATE);
break;
}
2.)设置一个新类PrefSelector
,并根据按钮的ID设置pref文件,以进入角色;也就是说,如果@+id/character1
被推送,那么Character1
pref文件将被获取。如果@+id/character2
被推送,那么Character2
pref文件将被获取,等等
下面的代码只是一个示例。它实际上充满了错误,我不知道如何修复
package com.mikitz.rogsimple;
import 安卓.app.Activity;
import 安卓.content.Context;
import 安卓.content.SharedPreferences;
public class PrefSelector extends Activity{
SharedPreferences pref;
if (ID = character1) {
pref = getSharedPreferences("Character1", Context.MODE_PRIVATE);
} else if (ID = character2) {
pref = getSharedPreferences("Character2", Context.MODE_PRIVATE);
} else if (ID = character3) {
pref = getSharedPreferences("Character3", Context.MODE_PRIVATE);
} else if (ID = character4) {
pref = getSharedPreferences("Character4", Context.MODE_PRIVATE);
} else if (ID = character5) {
pref = getSharedPreferences("Character5", Context.MODE_PRIVATE);
} else if (ID = character6) {
pref = getSharedPreferences("Character6", Context.MODE_PRIVATE);
}
}
我不确定这两种方法是否是最有效的解决方案,所以我来这里征求更有经验的程序员的建议。不仅如此,如果上述任何一种解决方案都是理想的解决方案,我也来寻求如何实施它的帮助
谢谢大家抽出时间:)
共 (0) 个答案