好的家伙在我的应用程序(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++;
}
}
我从代码中删除了所有不相关的方法和参数,以便更容易理解,我真的很难找到答案,所以如果你能帮忙我会非常感激!谢谢:))