根据变量获取某些SharedPreference文件

时间:2014-11-10 06:39:18

标签: java android sharedpreferences

我正在制作桌面RPG的配套应用。基本上它只跟踪角色及其发展。目前,由于每个角色都有自己的SharedPreferences文件,我觉得我的主程序包非常混乱。我通过只有6个可以用作用户需要的预设字符插槽来了解我不知道的代码。这要求我复制包5次。它看起来像这样:

Package Structure

在每个类中,我得到相应的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 1Character 2

直到现在,这还没有成为问题。在将来(在推出大量UI更新之后),将会有一个创建字符按钮,可以在单击时创建这些类和pref文件。所以,我的问题是我不知道如何在每个类型的一个类中处理这个问题; IE ArmorStatsSP.java将是唯一的Armor Stats类,并且抓取的pref文件将取决于用户当前正在查看的字符。

所以,我的问题是:如何根据用户正在查看的当前字符获取某个SharedPreferences文件; IE,如果用户正在查看字符2,则将获取pref数据的character2文件。如果他们正在查看字符1,则将获取character1文件等。

在每个Pref文件中,密钥在整个文件中都共享相同的名称; name中的Character1中的nameCharacter2中也是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}}

我不确定这些是否是最有效的解决方案,所以我来到这里是为了向更有经验的编码员寻求建议。不仅如此,如果上述任何一种解决方案都是理想的解决方案,我也会寻求如何实施它的帮助。

感谢您的时间,大家:)

0 个答案:

没有答案