我已成功将TabActivity转换为FragmentActivity,标签内容为Fragments。我正在运行两个问题:
我的每个标签都包含EditText。当我在TAB1上更改EditText的值时,切换到TAB2,然后切换回TAB1,EditText的值已被重置。
如果从我的某个标签片段中启动一个新活动,然后返回到现有的FragmentActivity,则标签内容会消失。我在使用TabHost时最初遇到此问题,这就是为什么我花时间将所有内容转换为碎片...
关于#1,我假设问题与savedInstanceState有关。我完全按照Google的example,在我的FragmentActivity的onCreate()中使用了以下内容:
initialiseTabHost(savedInstanceState);
if (savedInstanceState != null) {
mTabHost.setCurrentTabByTag(savedInstanceState.getString("tab"));
}
此外,这是我的FragmentActivity的onSaveInstanceState()方法:
protected void onSaveInstanceState(Bundle outState) {
outState.putString("tab", mTabHost.getCurrentTabTag());
super.onSaveInstanceState(outState);
}
以下是我的标签片段之一:
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
if (container == null) {
return null;
}
return (LinearLayout) inflater.inflate(R.layout.priority_boxes_tab,
container, false);
}
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
setRetainInstance(true);
ArrayList<Supply> list = new ArrayList<Supply>();
// More code here
}
我应该做什么吗?我在屏幕上有大约15个EditText字段。我是否需要以某种方式保存所有这些值并进行设置,以便字段下次重新填充这些值?
关于#2,我不知道我还能做什么。有没有人有任何建议?
谢谢!
答案 0 :(得分:2)
我只能回答第一个问题。是的,如果要恢复每个edittext的内容,则必须手动保存它们。如果不需要在应用程序运行期间保留它们,请将它们保存在onSaveInstanceState
的捆绑包中,并在onCreate
和/或onRestoreInstanceState
中将其还原。如果您需要持久化值,请使用SharedPreferences
或将其写入另一个文件或数据库。偏好可能是最简单的。