gpt4 book ai didi

java - 在 Activity 切换期间保留 View 中的数据?

转载 作者:行者123 更新时间:2023-12-01 15:55:38 24 4
gpt4 key购买 nike

在我的 Android 应用程序中,用户可以在 EditView 中输入文本,然后单击一个按钮,将他带到另一个 Activity ,在那里他可以选择一个联系人......然后按一个按钮,让他回到第一个 Activity ...

现在的问题是我需要将选定的联系人传递给第一个 Activity 并显示它(我已经使用 bundle 完成了它),但我无法保留在 EditView 中已输入的文本...我应该这样做(但是应该保留文本,而不是将其通过 bundle 并将其返回)

谢谢:)

最佳答案

即使在软终止(用户更改手机方向)之后,操作系统也会自动保存 View 组件中的文本,但在硬终止之后,用户在父 Activity 处于焦点状态时按下后退按钮,则不会。因此,除非您正在执行一些非标准的操作,例如调用 onSaveInstanceState 而不调用 super.onSaveInstanceState,否则 View 状态中的数据应该持续存在。

一种解决方案是在启动子 Activity 之前将 View 组件中的文本保存为非 View 实例属性,并在焦点返回到 onActivityResult 方法中的父 Activity 时读取该值。

日航

编辑:Android Docs Activity页面已被广泛更新。如果小部件没有 ID,则不会保存 View 状态。

编辑:我的意思是 View 状态应该由操作系统保存。您不需要手动保存 View 状态。在硬终止时,如果这是 Activity 的预期行为,则需要保存 Activity 的状态。这是一些保存 Activity 状态的代码。给定一个实例变量:

String password;

这里我们保存软杀伤的状态:

   protected void onSaveInstanceState(Bundle outState){
password= editTextPassword.getText().toString();
outState.putString("password", password);
super.onSaveInstanceState(outState); // save view state
}

这里我们保存硬杀的状态

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

SharedPreferences prefs = getPreferences(MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putString("password",password);
editor.commit();

这里我们在 onCreate(Bundle savingInstanceState) 中恢复状态:

if( savedInstanceState!= null){ // get saved state from soft kill after first pass
try {
password= savedInstanceState.getString("password");
Log.d(TAG,"RestoredState!");
}
catch(Exception e){
Log.d(TAG,"FailedToRestoreState",e);
}
}
else { // get saved state from preferences on first pass
SharedPreferences prefs = getPreferences(MODE_PRIVATE); // singleton
if (prefs != null){
this.password= prefs.getString("password","");
Log.d(TAG,"gettingPrefs");
}
}
Log.d(TAG,"onCreate");

此外,如果调用 onSaveInstanceState,它将在 onStop 之前调用,如果您将 onResume 中的标志重置为:

protected void onResume() {
super.onResume();
Log.d(TAG,"onResume");
isSavedInstanceState= false;
isSavedPrefs= false;
}

在 onCreate 中设置标志不会产生预期的结果。

关于java - 在 Activity 切换期间保留 View 中的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5124917/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com