我有五个片段,用户可以在它们之间切换。其中一个片段从服务器加载用户列表以填充片段上的UI列表。如果用户滑动到不同的片段,然后刷回原始列表,我需要列表信息保持不变。每次用户离开片段并返回时,我都不希望片段重新加载用户。
我正在查看setRetainInsance(true),并想知道这是否是可能的解决方案?片段保留信息的最佳方式是什么,而不是每次都从头开始创建。
我用它来切换fragements -getSupportFragmentManager()。beginTransaction()。replace(R.id.searchLayout,ratingFragment).commit();
答案 0 :(得分:0)
通过将片段添加到Backstack来替换片段。
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.addToBackStack(tag);
fragmentTransaction.replace(container, fragment, tag);
fragmentTransaction.commit();
同时创建View对象,如果它不为null,则返回它。
private void View view ;
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
if (view != null)
return view;
view = inflater.inflate(R.layout.fragment_browse_recipe, container, false);
//initialize layout views
return view;
}
答案 1 :(得分:0)
片段就像任何其他物体一样。 在Fragment事务中,Fragment不调用OnCreate()方法而是从onCreateView开始,因此,加载用户并将其保存为实例变量并将其分配给onCreate()
实施例
class MyFragment extends Fragment{
List<users> userList;
void onCreate(){
userList = getUserList();}
//the list is loaded during Oncreate();
现在想象你已经取代了片段
现在根据Andorid Framework,onCreate()不再被调用 而是调用onCreateView()
void onCreateView(){
//you can check whether instance Variable is initialised or not
if(userList != null) {
listview.setAdapter(new Myadapter(this,userList);