1我有三个activities
,如A,B,C。
我转到activity
A然后转到活动b。
我从活动A导航到活动B.
我想从活动B导航到活动A.
当我返回activity
B时,它应该处于我离开的状态(填充视图)。
我在两个活动中都接受了用户输入并希望保存它
答案 0 :(得分:0)
用于存储您的活动视图您需要override
onSaveInstanceState(Bundle savedInstanceState)
并将要更改的应用程序状态值写入Bundle
参数。
快乐的编码!!
答案 1 :(得分:0)
在我看来,通过Fragments with Viewpagers而不是活动控制这些屏幕会派上用场。但是,如果您仍然需要活动,您可以使用捆绑包或将这些实体保留在您的应用程序上下文中,这是活动中的共同背景(我不建议)
答案 2 :(得分:0)
一旦您从一个活动转移到另一个活动,如果您从后面的堆栈导航而不是通过Intent,则编辑的字段将可用。
示例
Back Stack - >按下后退按钮,它将调用您之前的活动。
意图 - > startActivity(new Intent(ActivityA.this,ActivityB.class));
如果您使用intent更改活动,它将重新创建活动,以便编辑的字段不可用..
到目前为止,如果您想在用户回来后存储字段,则需要使用共享首选项..
Refer the official documentation
我可以给你一个样本来将值存储在共享首选项中并从中检索。
public class CommonUtil {
public static void setUserName(String userName,Context context){
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("user_name",userName);
editor.apply();
}
public static String getUserName(Context context){
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
return sharedPreferences.getString("user_name",null);
}}
设置值表格活动
CommonUtil.setUserName("user",getApplicationContext());
CommonUtil.getUserName(getApplicationContext());
一旦用户离开,我将更新文本字段中的值
更新CommonUtil方法..
其中密钥将是用户名,密码
其中的值将取自textfields
public static void setValues(String key,String value, Context context){
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
final SharedPreferences.Editor editor = sharedPreferences.edit();
editor.remove(key);
editor.putString(key,value);
editor.apply();
}
public static String getValues(String key,Context context){
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
return sharedPreferences.getString(key,null);
}
如果您更喜欢循环,也可以
解决问题的最终解决方案..
final EditText username,surname,middlename,dob,email,password;
Button get,save;
final String[] keyset = new String[]{"username","surname","middlename","dob","email","password"};
username = (EditText) findViewById(R.id.username);
surname = (EditText) findViewById(R.id.surname);
middlename = (EditText) findViewById(R.id.middlename);
dob = (EditText) findViewById(R.id.dob);
email = (EditText) findViewById(R.id.email);
password = (EditText) findViewById(R.id.password);
final EditText[] editTexts = {username,surname,middlename,dob,email,password};
get = (Button) findViewById(R.id.get);
save = (Button) findViewById(R.id.save);
save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
for (int i =0 ; i<6 ;i++){
CommonUtil.setValues(keyset[i],editTexts[i].getText().toString(),getApplicationContext());
Log.d("got",editTexts[i].getText().toString());
}
}
});
get.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
for (int i =0 ; i<6 ;i++){
CommonUtil.getValues(keyset[i],getApplicationContext());
Log.d("got",CommonUtil.getValues(keyset[i],getApplicationContext()));
}
}
});