1

我有2个片段。在第一个片段中,有一个我从服务器获取的项目的列表视图。当我单击一个列表项时,它将导航到第二个片段,其中包含我单击的项目的详细信息。但是当我按下并导航到上一个片段时,我必须经历从服务器获取数据的相同过程。有没有办法避免这种情况?我可以导航回上一个片段而不再次发出该网络请求吗?

4

1 回答 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 回答