当通过导航抽屉将先前的片段替换为新片段时,Volley如何在新片段中显示先前片段的响应?

7

我有一个导航抽屉里共有12个碎片,每个碎片都有Volley方法。除了位置为1和位置为5的碎片外,每个碎片都显示它自己的Volley响应。

当我的应用程序启动时

场景1:我打开位置1的碎片,然后打开位置5的碎片,那么两个碎片都有位置1的碎片响应。

场景2:如果我打开位置5的碎片,然后打开位置1的碎片,那么两个碎片都有位置1的碎片响应。

场景1图像:

FragmentInbox FragmentLaws

场景2图像:

FragmentLaws FragmentInbox

我的碎片事务方法类:

private void showFragment(Fragment fragment) {
    llContainer = (LinearLayout)findViewById(R.id.container);
    if (fragment != null) {
        llContainer.removeAllViewsInLayout();
        FragmentManager fragmentManager = getSupportFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        fragmentTransaction.replace(R.id.container, fragment, fragment.getClass().getName());
        fragmentTransaction.commit();
        fragmentManager.popBackStack();
    }
}


@Override
public void onItemSelected(int position) {
    Fragment frag = null;
    switch (position) {
        case POS_HOME:
            frag = FragmentHome.instance(screenTitles[position]);
            break;
        case POS_INBOX:
            txtToolbarTitle.setVisibility(View.VISIBLE);
            txtToolbarTitle.setText("Notifications");
            frag = FragmentInbox.instance(screenTitles[position]);
            break;
        case POS_LOG:
            frag = FragmentLog.instance(screenTitles[position]);;
            break;
        case POS_BOOK:
            frag = FragmentBook.instance(screenTitles[position]);
            break;
        case POS_BUILDING:
            frag = FragmentBuilding.instance(screenTitles[position]);
            break;
        case POS_LAWS:
            frag = FragmentLaws.instance();
            break;
        case POS_DOCUMENT:
            frag = FragmentDocument.instance(screenTitles[position]);
            break;
        case POS_EVENT:
            frag = FragmentEvent.instance(screenTitles[position]);
            break;
        case POS_BOARD:
            frag = FragmentBoard.instance(screenTitles[position]);
            break;
        case POS_AROUND:
            frag = FragmentAround.instance(screenTitles[position]);
            break;
        case POS_PROFILE:
            frag = FragmentProfile.instance(screenTitles[position]);
            break;
        case POS_CONCIERGE:
            frag = FragmentConcierge.instance(screenTitles[position]);
            break;
    }

    showFragment(frag);
    mSlideMenu.closeMenu();
}

{btsdaf} - abhishesh
1个回答

0
问题出在viewPagers上,两个片段的viewpager具有相同的id。所以我只需更改fragmentInbox的viewpager id,现在它可以正常工作了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接