Android:如何在Android的SharedPreferences中存储字符串数组

Anu*_*pam 4 android search-engine sharedpreferences android-browser

我正在构建一个使用搜索引擎搜索网络的应用.我的应用程序中有一个edittext,用户将从中搜索网页.我想像浏览器历史一样保存搜索关键字.我可以使用最后一个关键字保存并显示它,但我不能增加搜索结果的数量.我想显示最近的5个searhes.这是我的代码:

public class MainActivity extends Activity implements OnClickListener {

Button insert;
EditText edt;
TextView txt1, txt2, txt3, txt4, txt5;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    edt = (EditText) findViewById(R.id.search_word);

    txt1 = (TextView) findViewById(R.id.txt1);
    txt1.setOnClickListener(this);

    insert = (Button) findViewById(R.id.insert);
    insert.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
            if ((edt.getText().toString().equals(""))) {
                Toast.makeText(
                        getBaseContext(),
                        "Whoa! You haven't entered anything in the search box.",
                        Toast.LENGTH_SHORT).show();

            } else {
                SharedPreferences app_preferences = PreferenceManager
                        .getDefaultSharedPreferences(MainActivity.this);
                SharedPreferences.Editor editor = app_preferences.edit();
                String text = edt.getText().toString();
                editor.putString("key", text);
                editor.commit();
                Toast.makeText(getBaseContext(), text, Toast.LENGTH_LONG)
                        .show();
            }

        }
    });
}

@Override
protected void onStart() {
    // TODO Auto-generated method stub
    super.onStart();

    SharedPreferences app_preferences = PreferenceManager
            .getDefaultSharedPreferences(this);
    String text = app_preferences.getString("key", "null");
    txt1.setText(text);
}

public void onClick(View v) {
    String text = txt1.getText().toString();
    Toast.makeText(getBaseContext(), text, Toast.LENGTH_SHORT).show();

}
Run Code Online (Sandbox Code Playgroud)

}

请帮我克服这个问题.

小智 31

保存阵列

public boolean saveArray(String[] array, String arrayName, Context mContext) {   
    SharedPreferences prefs = mContext.getSharedPreferences("preferencename", 0);  
    SharedPreferences.Editor editor = prefs.edit();  
    editor.putInt(arrayName +"_size", array.length);  
    for(int i=0;i<array.length;i++)  
        editor.putString(arrayName + "_" + i, array[i]);  
    return editor.commit();  
} 
Run Code Online (Sandbox Code Playgroud)

负载阵列

public String[] loadArray(String arrayName, Context mContext) {  
    SharedPreferences prefs = mContext.getSharedPreferences("preferencename", 0);  
    int size = prefs.getInt(arrayName + "_size", 0);  
    String array[] = new String[size];  
    for(int i=0;i<size;i++)  
        array[i] = prefs.getString(arrayName + "_" + i, null);  
    return array;  
}
Run Code Online (Sandbox Code Playgroud)