Android studio:在sharedpreferences中保存字符串数组?

时间:2016-02-17 11:28:41

标签: android android-studio android-edittext views sharedpreferences

好的家伙在我的应用程序(Android工作室)我尝试在一个活动中创建编辑文本时,我按下另一个活动的按钮。但是,当我移动到第二个活动以添加新的编辑文本时,我希望在我的活动的编辑文本中键入的文本保持在那里。为此,我尝试将我的字符串保存在共享首选项中,然后在我返回后重新创建活动中的视图。目前,我可以添加第二个活动的编辑文本,并保存它们的数量,例如,如果我在主活动中有2个编辑文本,则按"添加新的"在第二个活动中,它将我带回主要活动,并有三个编辑文本视图。但是,我输入的文本不会保存。基本上我有一个onStop方法:

@Override
protected void onStop(){
    super.onStop();

    SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
    SharedPreferences.Editor editor = settings.edit();
    int t=0;
    if (views>0) {
        for (int i = views; i == 0; i--) {
            EditText ed = (EditText)findViewById(t);
            String s=ed.getText().toString();
            editor.putString("p"+t, s);
            t++;
        }
    }
    editor.putInt("no",views);

    // Commit the edits!
    editor.commit();
}

然后在onCreate方法中:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_scrolling);
    SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
    s.clear();
    int l=0;
    views=settings.getInt("no",0);
    for (int i=(views);i==0;i--){
        s.add(settings.getString("p"+l,null));
        l++;
    }
    makeViews();
}

每次重新打开活动时,makeviews方法都会创建编辑文本视图:

public void makeViews(){
    LinearLayout myLayout=(LinearLayout)findViewById(R.id.linearlayout);
    int x=views;
    int i=0;
    while (x>0){

        EditText myEditText = new EditText(this); 
        myEditText.setId(i);
        if (s.size()>0){
            myEditText.setText(s.get(i), TextView.BufferType.EDITABLE);
        }
        myEditText.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); // Pass two args; must be LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT, or an integer pixel value.
        myLayout.addView(myEditText);

        x--;
        i++;
    }
}

我从代码中删除了所有不相关的方法和参数,以便更容易理解,我真的很难找到答案,所以如果你能帮忙我会非常感激!谢谢:))

0 个答案:

没有答案