Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在共享首选项中存储字符串数组?_Android - Fatal编程技术网

Android 如何在共享首选项中存储字符串数组?

Android 如何在共享首选项中存储字符串数组?,android,Android,如何在SharedReferences中存储字符串数组?请给我一个示例代码,用于存储数组名称并在另一个活动中检索它。提前感谢不支持阵列。但是,您可以存储一个集合 SharedPreferences prefs = parent.getContext().getSharedPreferences( "com.example.app", Context.MODE_PRIVATE); Set<String> values = new HashSet&

如何在SharedReferences中存储字符串数组?请给我一个示例代码,用于存储数组名称并在另一个活动中检索它。提前感谢

不支持阵列。但是,您可以存储一个集合

    SharedPreferences prefs = parent.getContext().getSharedPreferences(
            "com.example.app", Context.MODE_PRIVATE);
    Set<String> values = new HashSet<String>();
    values.add("value 1");
    values.add("value 2");
    prefs.edit().putStringSet("myKey", values).commit();
SharedReferences prefs=parent.getContext().getSharedReferences(
“com.example.app”,Context.MODE_PRIVATE);
Set values=新的HashSet();
价值。增加(“价值1”);
价值。增加(“价值2”);
prefs.edit().putStringSet(“myKey”,values.commit();

让我试着帮你

首先,在要使用SharedReferences的活动中设置这些类变量

public static String MY_PREFS = "MY_PREFS";
private SharedPreferences mySharedPreferences;
int prefMode = Activity.MODE_PRIVATE;
然后像这样存储字符串值

SharedPreferences.Editor editor = mySharedPreferences.edit();
editor.putString("key1", "value1");
editor.putString("key2", "value2");
editor.putString("key3", "value3");

editor.commit(); // to persist the values between activities
最后,要在另一个活动中访问SharedReference,请使用

mySharedPreferences = getSharedPreferences(MY_PREFS, prefMode);
String string1 = mySharedPreferences.getString("key1", null);
String string2 = mySharedPreferences.getString("key2", null);
希望这对你有点帮助。

第一个活动

public class MainActivity extends ActionBarActivity {

        private Button button;
        private SharedPreferences preferences;
        private String[] name = {"aa", "bb", "cc"};
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            button=(Button)findViewById(R.id.button1);
            preferences=getSharedPreferences("testarray", MODE_PRIVATE);
            for(int i=0;i<3;i++)
            {
                SharedPreferences.Editor editor=preferences.edit();
                editor.putString("str"+i, name[i]);
                editor.commit();
            }
            button.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    startActivity(new Intent(MainActivity.this,Secondact.class));               
                }
            });
        }

    }
公共类MainActivity扩展了ActionBarActivity{
私人按钮;
私人共享参考偏好;
私有字符串[]名称={“aa”、“bb”、“cc”};
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
按钮=(按钮)findViewById(R.id.button1);
首选项=GetSharedReferences(“testarray”,模式\私有);

对于(int i=0;i请将您尝试过的代码输入我不知道,请给出您的answers@SimonChius:仅供参考:如果你不发布你尝试过的代码,你会得到很多反对票。我个人不会对新来者投反对票,因为我知道你们还不熟悉发布规则和指南。我想每个新来者都应该d阅读规则@ChuongPhamcan您能告诉我如何检索设置值=prefs.getStringSet(“myKey”);当我使用此代码检索数据getStringSet(String)时,类型SharedReferences中的方法getStringSet(String,Set)不适用于参数(String)只有检索集合的键。setStringSet将集合作为参数来设置新值。getStringSet(String,set)没有意义。该怎么办?对不起,老兄。我要的是字符串数组对不起,我以前从未在SharedReferences中使用过数组。我想你应该看看其他答案。你可以使用字符串集。但它要求最小API级别为11。
public class Secondact extends ActionBarActivity {

    private Button button;
    private SharedPreferences preferences;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button = (Button) findViewById(R.id.button1);
        preferences = getSharedPreferences("testarray", MODE_PRIVATE);
        button.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                for(int i=0;i<3;i++)
                {
                    Log.d("aa", preferences.getString("str"+i, " "));
                }

            }
        });
    }
}
public class MainActivity extends ActionBarActivity {

    private Button button;
    private SharedPreferences preferences;
    private String[] name = {"aa", "bb", "cc"};
    Set<String> values = new HashSet<String>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button=(Button)findViewById(R.id.button1);
        preferences=getSharedPreferences("testarray", MODE_PRIVATE);
        for(int i=0;i<3;i++)
        {
            values.add(name[i]);
        }

        button.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                for(int i=0;i<3;i++)
                {

                    SharedPreferences.Editor editor=preferences.edit();
                    editor.putStringSet("str", values);
                    editor.commit();
                }
                startActivity(new Intent(MainActivity.this,Secondact.class));               
            }
        });
    }

}


public class Secondact extends ActionBarActivity {

    private Button button;
    private SharedPreferences preferences;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button = (Button) findViewById(R.id.button1);
        preferences = getSharedPreferences("testarray", MODE_PRIVATE);

        button.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                Set<String> values = preferences.getStringSet("str", null);

                String[] name = values.toArray(new String[values.size()]);
                for (int i = 0; i < values.size(); i++) {
                    Log.d("aa", name[i]);
                }

            }
        });
    }
}