【发布时间】:2011-11-04 11:15:34
【问题描述】:
我正在开发 android 中的选项卡式应用程序。在第一个选项卡中,我有一个带有文本视图、微调器的搜索引擎。如果我填写了这些参数并切换到其他选项卡或搜索结果活动,然后我返回到此选项卡(搜索引擎选项卡),我发现所有字段被重新初始化。但我想保留它们的价值以记住我搜索的内容.. 当我在活动之间切换时,有没有办法保留我的数据?
感谢您的帮助。
【问题讨论】:
我正在开发 android 中的选项卡式应用程序。在第一个选项卡中,我有一个带有文本视图、微调器的搜索引擎。如果我填写了这些参数并切换到其他选项卡或搜索结果活动,然后我返回到此选项卡(搜索引擎选项卡),我发现所有字段被重新初始化。但我想保留它们的价值以记住我搜索的内容.. 当我在活动之间切换时,有没有办法保留我的数据?
感谢您的帮助。
【问题讨论】:
您可以覆盖 onSaveInstanceState(将在您转换到新活动之前调用)和 onRestoreInstanceState(将在您的活动恢复之前调用)例如:
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
// Save UI state changes to the savedInstanceState.
// This bundle will be passed to onCreate if the process is
// killed and restarted.
savedInstanceState.putBoolean("MyBoolean", true);
savedInstanceState.putDouble("myDouble", 1.9);
savedInstanceState.putInt("MyInt", 1);
savedInstanceState.putString("MyString", "Welcome back to Android");
// etc.
super.onSaveInstanceState(savedInstanceState);
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
// Restore UI state from the savedInstanceState.
// This bundle has also been passed to onCreate.
boolean myBoolean = savedInstanceState.getBoolean("MyBoolean");
double myDouble = savedInstanceState.getDouble("myDouble");
int myInt = savedInstanceState.getInt("MyInt");
String myString = savedInstanceState.getString("MyString");
}
【讨论】:
我猜您正在创建意图对象以使用addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) 启动您的选项卡活动。如果你做了这样的事情,只需删除这个功能。例如,创建如下意图对象,
Intent intent = new Intent(this, tabActivity.class);
不是这样的,
Intent intent = new Intent(this, tabActivity.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
如果您这样做,您将在切换到另一个选项卡之前获得一个选项卡的确切状态。
【讨论】: