我有两个android活动。 Activity1是一个输入表单。在此活动中有一个manyTextEditor和ImageView。但是许多TextEditor中的一个需要转到Activity2来填充数据并将数据返回给Activity1。
但是当用户返回到Activity1时,用户的TextEditor中的值已经填充它,然后转到activity2就会丢失。
转到另一个Activity时如何仍然是TextEditor的值。
感谢任何想法。
答案 0 :(得分:3)
这是官方指南:
http://developer.android.com/training/basics/activity-lifecycle/recreating.html
您应该将文本编辑值存储在Bundle中:
protected void onSaveInstanceState (Bundle outState)
并从以下位置的savedInstanceState包中恢复它:
protected void onRestoreInstanceState (Bundle savedInstanceState)
[编辑]
实际上android应该使用上述机制保存您的视图内容
答案 1 :(得分:0)
当您转到下一个活动时,请将该值存储在sharedpreferences
中,然后再次返回上一个活动时从那里检索它并将其放在edittext
中。
答案 2 :(得分:0)
按照简单计划
的建议将其写在代码中 public class MainActivity extends Activity {
EditText ed;
Button bt;
private String str = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ed = (EditText) findViewById(R.id.editText1);
bt = (Button) findViewById(R.id.button1);
bt.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent i = new Intent (MainActivity.this, First.class);
startActivity(i);
}
});
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
str = ed.getText().toString();
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
ed.setText(str);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
答案 3 :(得分:0)
行。我可以解决我的问题。
我使用startActivityForResult()函数从subActivity获取用户数据并将结果返回到主活动,这样用户的TextEditor中的值在转到activity2之前填充它它没有消失
参考:How to pass integer from one activity to another?
PS。感谢marcin_j回答它作为我的新知识,感谢任何评论和回答