我有两个片段。在第一个片段中,有一个我从服务器获取的项目的列表视图。当我单击一个列表项时,它将导航到第二个片段,其中包含我单击的项目的详细信息。但是当我按下并导航到上一个片段时,我必须经历从服务器获取数据的相同过程。有办法避免这种情况吗?我可以在不再发出网络请求的情况下导航回上一个片段吗?
答案 0 :(得分:0)
我不确定你用什么方法倒退。我认为这是因为你已经覆盖onBackPress方法并通过片段转换加载片段。当按下它时,它将启动片段并创建一个新的复制片段对象。如果您可以避免网络呼叫再次呼叫。
你可以试试这个。覆盖onbackpress方法。
@Override
public void onBackPressed() {
int count = getSupportFragmentManager().getBackStackEntryCount();
if (count == 0) {
navigateActivity(HomeActivity.class);
} else {
getSupportFragmentManager().popBackStackImmediate();
}
}
按照以下方式启动新片段,
public void switchFragment(Fragment frag) {
String backStateName = fragment.getClass().getName();
FragmentManager manager = getSupportFragmentManager();
boolean fragmentPopped = manager.popBackStackImmediate (backStateName, 0);
if (!fragmentPopped){
fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.report_fragment, frag);
fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
fragmentTransaction.addToBackStack(backStateName);
fragmentTransaction.commit();
}
}
希望这会有所帮助。