android如何管理导航栏中的片段而不会丢失数据

时间:2017-11-25 07:47:25

标签: android android-fragments fragment navigationbar fragment-backstack

我有一个商店应用程序 在此应用程序中,片段每个都从服务器获取自己的数据,并由导航栏管理。 我希望只接收一次任何片段的数据,并且只会在一段时间后保持其最后状态。 我使用了替换,隐藏功能,但我没有得到好的结果 有人可以提出解决方案吗?

nav_partition.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            FragmentManager fm = getSupportFragmentManager();
            Fragment lastFragment = fm.findFragmentById(R.id.fragment_layout);
            if (lastFragment instanceof FragmentPartition)
                return;
            FragmentTransaction fragmentTransaction = fm.beginTransaction();
            fragmentTransaction.hide(lastFragment);
            if (fragmentPartition == null)
                fragmentPartition = new FragmentPartition();
            G.log_toast("is added : " + fragmentPartition);
            fragmentTransaction.replace(R.id.fragment_layout, fragmentPartition);
            fragmentTransaction.commit();
        }
    });

1 个答案:

答案 0 :(得分:0)

您可以使用savedinstancestate捆绑包来保存数据。它可以在恢复时重复使用。试试下面的代码。

@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
    super.onSaveInstanceState(savedInstanceState);
    savedInstanceState.putBoolean("bln", true);
    savedInstanceState.putInt("it", 1);
    savedInstanceState.putString("str", "Hello");
}

@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    boolean bln = savedInstanceState.getBoolean("bln");
    int in = savedInstanceState.getInt("it");
    String str = savedInstanceState.getString("str");

}