有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java基于变量获取特定的SharedReference文件

我正在为桌面RPG制作一个配套应用。基本上,它只是跟踪角色及其发展。目前,我觉得我的主程序包非常混乱,因为每个角色都有自己的SharedReferences文件。我绕过了我不知道的代码,只使用了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);

这在main活动中是必要的,我在按钮上显示字符的名称,而不是预设的Character 1Character 2

到目前为止,这还不是一个问题。在未来(在我推出一个大规模的UI更新之后),将有一个创建角色按钮,它将在单击时创建这些类和pref文件。所以,我的问题是,我不知道如何在一个类中为每种类型处理这个问题;IE ArmorStatsSP.java将是装甲统计的唯一类,抓取的pref文件将取决于用户当前查看的角色

所以,我的问题是:如何根据用户正在查看的当前角色获取某个SharedReferences文件;也就是说,如果用户正在查看character 2,则会为Pref数据获取character2文件。如果他们正在查看character1,character1文件将被提取,等等

在每个Pref文件中,密钥在整个文件中共享相同的名称;IE namein Character1也是namein 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被推送,那么Character1pref文件将被获取。如果@+id/character2被推送,那么Character2pref文件将被获取,等等

下面的代码只是一个示例。它实际上充满了错误,我不知道如何修复

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) 个答案