我正在处理一个应用程序。
我想在 Activity 中的某处加载 Fragment,当在 FirstFragment 上单击 Gridview/Listview 项目时,我加载 SecondFragment
我已经按照下面的方式添加了 fragment :
主 Activity .java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.form_creation_view);
Fragment fragment = new FirstFragment();
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(R.id.form_view, fragment).commit();
}
第二个 fragment :
Fragment fragment = new SecondFragment();
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.addToBackStack(null);
fragmentTransaction.replace(R.id.form_view, fragment).commit();
MainActivity.java 的 OnBackPress :
@Override
public void onBackPressed() {
if(getFragmentManager().getBackStackEntryCount() == 0) {
super.onBackPressed();
} else {
getFragmentManager().popBackStack();
}
}
因此,当我在加载 SecondFragment 时按下 Mainactivity 上的 BackButton 时,它会切换到 FirstFragment,但它会再次调用 FirstFragment 的 onCreateView()
方法。
FirstFragment 内部有一个 Recyclerview,我在 OnCreateView()
方法中向服务器发送一个 API 请求,以便将数据加载到这个 Recyclerview 中。
现在,当我从 SecondFragment 再次回到这个 Fragment 时,我想要它,这样请求就不会被执行,数据应该被填充到 RecyclerView 中。
我怎样才能做到这一点?
有人可以帮我吗?
最佳答案
在你的 onCreateView 中,你应该做这样的检查:
if(mList.size() == 0){
//make api call
}else{
//set recyclerView adapter
}
这样,当您从 SecondFragment 返回时,您可以重新填充 RecyclerView。
你还应该考虑在 onSaveInstanceState 上保存这个列表
关于android - 同一个Activity中的Fragment切换重启同一个Fragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39286617/