Android FragmentActivity和Tabs的问题

时间:2012-03-30 19:33:20

标签: java android tabs fragment

我已成功将TabActivity转换为FragmentActivity,标签内容为Fragments。我正在运行两个问题:

  1. 我的每个标签都包含EditText。当我在TAB1上更改EditText的值时,切换到TAB2,然后切换回TAB1,EditText的值已被重置。

  2. 如果从我的某个标签片段中启动一个新活动,然后返回到现有的FragmentActivity,则标签内容会消失。我在使用TabHost时最初遇到此问题,这就是为什么我花时间将所有内容转换为碎片...

  3. 关于#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,我不知道我还能做什么。有没有人有任何建议?

    谢谢!

1 个答案:

答案 0 :(得分:2)

我只能回答第一个问题。是的,如果要恢复每个edittext的内容,则必须手动保存它们。如果不需要在应用程序运行期间保留它们,请将它们保存在onSaveInstanceState的捆绑包中,并在onCreate和/或onRestoreInstanceState中将其还原。如果您需要持久化值,请使用SharedPreferences或将其写入另一个文件或数据库。偏好可能是最简单的。