从数组加载和保存字符串的问题

时间:2013-05-07 17:04:56

标签: android arrays string load save

所以我已经对这个主题进行了研究,并且有很多方法可以为数组中的字符串做一个收藏。用户点击一个最喜欢的按钮来收藏将在阵列中的特定显示字符串。我在这个类中提出了一个load数组和save数组方法。我在loadArray上收到我的错误(收藏夹,这个);和saveArray(收藏夹,“收藏夹”,这个);它似乎没有将loadArray或saveArray识别为方法。非常感谢!

public class Base extends Activity implements OnClickListener {

    Button home, search, moreapps, fav;
    TextView display;
    String [] favorites;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(starting.rt.R.layout.relationship);
        home = (Button) findViewById(starting.rt.R.id.Home);
        search = (Button) findViewById(starting.rt.R.id.search);
        moreapps = (Button) findViewById(starting.rt.R.id.moreapps);
        fav = (Button) findViewById(starting.rt.R.id.fav);
        display = (TextView) findViewById(starting.rt.R.id.tvResults);
        fav.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
                display.getText();
                loadArray(favorites, this);
                favorites = Arrays.copyOf(favorites, favorites.length+1);
                favorites[favorites.length]=display.getText().toString();
                saveArray(favorites, "favorites", this);

            }
        }); 
    }

    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;  
    }  

    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();  
    } 
    public void onClick(View arg0) {
        // TODO Auto-generated method stub

    }
}

2 个答案:

答案 0 :(得分:1)

那是因为该范围内的 onClickListener(),您可以使用 Base.this 来引用 Activity < / em>(上下文)。

我不建议使用 getApplicationContext() ,文档说:

  

这通常只应在需要Context的情况下使用   生命周期与当前上下文分开,与之相关   过程的生命周期而不是当前的组件。

答案 1 :(得分:1)

您正在致电

 loadArray(String[], View.OnClickListener)

而不是

 loadarray(String, Context)

“favorites”是一个字符串数组,而不是字符串

“this”指的是View.OnclickListener而不是Context

您可以使用“getApplicationContext()”

获取上下文