繁体   English   中英

在片段Android中保存数据

[英]Saving data in fragment android

我一直在尝试实现与联系人有关的某些功能。我有一个片段来显示设备中的所有联系人。首先,当片段实例创建时,联系人将被提取并存储在arraylist中,然后将其显示在列表视图中。 第一次获取时,加载联系人大约需要3-5秒,所以我放置了一个加载视图。是否有任何方法可以保存此列表并将其保留回去,因此第二次获取联系人列表的速度更快。正在替换按钮按下时的片段。这是我的代码。

public static void replaceFragment(FragmentManager fm, int container, Fragment fragment) {
    FragmentTransaction ft = fm.beginTransaction();
    ft.replace(container, fragment);
    ft.commit();
}

并调用了活动的onCreate()

 Utils.replaceFragment(getSupportFragmentManager(), R.id.container, new Fragment1());

在活动中每按一次按钮,我都会调用此方法。

@Override
public void onClick(View v) {
    Typeface tf;
    switch (v.getId()) {
        case R.id.frag1_btn:
            Utils.replaceFragment(getSupportFragmentManager(), R.id.container, new Fragment1());
            break;

        case R.id.contact_btn:
            Utils.replaceFragment(getSupportFragmentManager(),
                        R.id.container, new ContactFragment());
            break;
    }
}

我已经搜索过saveToBackStack()方法以及onsavedInstanceState(Bundle)onRetainSavedInstance() ,但是我可以在这里使用它们吗? 还要使用这些还需要addToBackStack()方法吗?我还是这个新手。有什么建议吗?

当您替换Fragment时,您正在创建Fragment的新实例,那么片段以前的状态将永远不会恢复。

Utils.replaceFragment(getSupportFragmentManager(), R.id.container, new Fragment1());

也许您可以使用2个容器,每个片段一个,而不是替换框架,而是显示和隐藏它们。 如果这样做,您将获得片段的先前实例。

http://developer.android.com/reference/android/app/FragmentManager.html#findFragmentById(int)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM