我有2个片段。在第一个片段中,有一个我从服务器获取的项目的列表视图。当我单击一个列表项时,它将导航到第二个片段,其中包含我单击的项目的详细信息。但是当我按下并导航到上一个片段时,我必须经历从服务器获取数据的相同过程。有没有办法避免这种情况?我可以导航回上一个片段而不再次发出该网络请求吗?
问问题
495 次
1 回答
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();
}
}
希望这会有所帮助。
于 2017-01-16T08:03:06.720 回答