在整个应用程序中保存片段的状态

时间:2017-01-10 20:37:35

标签: android android-fragments

我有一个应用程序,其中应用程序有在线和&离线模式。 加载片段后,将进行网络调用并设置数据。 用户对片段UI进行了一些更改,例如添加按钮,编辑TextBox等。我必须在整个应用程序中保持该状态。 我有下一个&以前的按钮,当我按下片段上的前一个按钮正在重新加载,即使我试图将它添加到后台堆栈,同时替换它并调用getActivity()。onBackPressed();。

我尝试过的事情: 1)将值保存到捆绑包中的数据太多了由于大量数据/值而难以检索。

2 个答案:

答案 0 :(得分:0)

如果你使用viewpager,你可以保留片段的最后状态,它不会重新加载,直到你设置的屏幕外限制如下。

mViewPager.setOffscreenPageLimit(limit); //limit: integer value >=1 

答案 1 :(得分:0)

如果您要保存大量数据,请使用SQLite,否则您可以使用共享首选项

有关详细信息,请访问此link

首先获取对共享首选项文件的引用

Context context = getActivity();
SharedPreferences sharedPref = context.getSharedPreferences("my_preferences", Context.MODE_PRIVATE);

在使用

写入共享首选项后
SharedPreferences.Editor editor = sharedPref.edit();
editor.putString("key", "value");

//use editor.apply() if you want to save your data imedialtly
editor.commit();

当你想要检索数据时(onCreateView / onViewCreated)

public void onViewCreated(View view, Bundle savedInstanceState) {
      super.onViewCreated(view, savedInstanceState);

      SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);

      EditText editex = (EditText) view.findViewById(R.id.your_view_id);
      editext.setText(sharedPref.getString("key", defaultValue))
  }

但请记住,即使您的应用被杀/被摧毁,共享偏好设置也会保存并保存您的数据