我正在制作桌面RPG的配套应用。基本上它只跟踪角色及其发展。目前,由于每个角色都有自己的SharedPreferences文件,我觉得我的主程序包非常混乱。我通过只有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);
在MainActivity中我需要显示字符'按钮上的名称代替预设的Character 1
,Character 2
等
ArmorStatsSP.java
将是唯一的Armor Stats类,并且抓取的pref文件将取决于用户当前正在查看的字符。
所以,我的问题是:如何根据用户正在查看的当前字符获取某个SharedPreferences文件; IE,如果用户正在查看字符2,则将获取pref数据的character2文件。如果他们正在查看字符1,则将获取character1文件等。
在每个Pref文件中,密钥在整个文件中都共享相同的名称; name
中的Character1
中的name
在Character2
中也是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);
,依此类推。
我看到了两种可能的解决方案:
1。)为每个Pref文件声明不同的名称,就像我在MainActivity中所做的那样:
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;
}
(字符编号)
PrefSelector
2.)设置一个新的类@+id/character1
并根据按下的按钮的ID来设置pref文件以进入角色; IE如果推送Character1
,则将获取@+id/character2
pref文件。如果推送Character2
,则会提取package com.mikitz.rogsimple;
import android.app.Activity;
import android.content.Context;
import android.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);
}
}
pref文件,等等。
以下代码只是一个例子。它实际上充满了错误,我不确定如何修复。
{{1}}
我不确定这些是否是最有效的解决方案,所以我来到这里是为了向更有经验的编码员寻求建议。不仅如此,如果上述任何一种解决方案都是理想的解决方案,我也会寻求如何实施它的帮助。
感谢您的时间,大家:)