我正在编写一个应用程序,我正在处理5个活动,比方说A,B,C,D& E. 活动A调用B,B调用C,C调用D,D调用E.在每个活动上,我有一个名为“next”按钮的按钮和editText来填充名称。当用户点击任何A,B,C,D,E活动中的下一个按钮时,应用程序应转到下一个活动屏幕,但当用户单击E活动中的“返回”按钮时,它应该继续进行活动A.
现在我的问题是,当我从活动A开始从背后的活动E开始时,我想保留所有活动的editText数据,这是第一次用户填写的时间吗?
答案 0 :(得分:0)
试试这个:
拥有共享首选项文件。单击下一步时,您将保存共享首选项中的字段。
然后加载活动时
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_a);
et1 = (EditText)findViewById(R.id.editText_Name);
loadSavedPreferences();
}
private void loadSavedPreferences() {
SharedPreferences sharedPreferences = PreferenceManager
.getDefaultSharedPreferences(this);
et1.setText(sharedPreferences.getString("string_et_Name",""));
}
在下一次按钮点击时有自己的保存机制。
注意:点击完成后清除共享首选项(如果需要)
答案 1 :(得分:0)
第1步:首先在MainActivity上使用int值对布尔标志进行decalre假设:
private boolean flag=200;
第2步:从我们正在切换的主要活动中分别按下按钮上的5个其他活动。
因此,从主要活动我们调用StartActivityForResult(intent,flag);
,表示我们可以从任何活动返回相同的标志值。
第3步:现在假设我们想要活动数据“E”(根据您的问题),然后我们通过捆绑发送它; like:在我们旅行的每个活动上声明相同的布尔值200
Intent intent=new Intent();
intent.putExtra("firstName",firstName);
intent.putExtra("lastName",lastName);
setResult(flag,intent);
finish();
第4步:按照onActivityResult()
方法获取即将开展的活动的捆绑值
并检查标志值
喜欢:
if (resultCode==200)
{
String firstName=data.getStringExtra("firstName");
String lastName=data.getStringExtra("lastName");
Intent intent=new Intent();
intent.putExtra("firstName",firstName);
intent.putExtra("lastName",lastName);
setResult(200,intent);
finish();
}
步骤5:同样适用于所有活动;
第6步:最后,在MainActivity上获取捆绑包 喜欢:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode==200)
{
String firstName=data.getStringExtra("firstName");
String lastName=data.getStringExtra("lastName");
textViewFirstName.setText(firstName);
textViewLastName.setText(lastName);
}
}
答案 2 :(得分:0)