从导航

时间:2015-07-15 06:39:49

标签: android android-layout android-fragments android-activity

我正在使用导航栏,在我的"主要活动"中有5个片段。 我的第5个片段是调查页面,我想在调查结束时,这个第5个片段将从我的导航栏中删除。

我在主要活动中的代码:

private void displayView(int position) {
    // update the main content by replacing fragments
    Fragment fragment = null;

    switch (position) {
    case 0:
        fragment = new AFragment();
        break;
    case 1:
        fragment = new BFragment();
        break;
    case 2:
        fragment = new CFragment();
        break;
    case 3:
        fragment = new DFragment();
        break;
    case 4:
        fragment = new SurveyFragment();
        break;

    default:
        break;
    }

    if (fragment != null) {
        FragmentManager fragmentManager = getSupportFragmentManager();
        FragmentTransaction ft = fragmentManager.beginTransaction();
        ft.replace(R.id.frame_container, fragment);
        ft.commit();

        // update selected item and title, then close the drawer
        mDrawerList.setItemChecked(position, true);
        mDrawerList.setSelection(position);
        setTitle(navMenuTitles[position]);
        mDrawerLayout.closeDrawer(mDrawerList);
    } else {
        // error in creating fragment
        Log.e("MainActivity", "Error in creating fragment");
    }
} 

2 个答案:

答案 0 :(得分:0)

您可以尝试将ViewPager与适配器一起使用。调查完成后,您可以在“活动”中设置布尔值,然后刷新适配器。

布尔值将执行以下操作:

{
   if(survayNotDone) 
       adapter.add(5thFragment);
   viewPager.setAdapter(adapter);
}

答案 1 :(得分:-1)

通过导航栏,您可能意味着NavigationDrawer,因此您可以声明一个回调接口:

public interface OnFinishCallback {
    void onFinish();
}

然后在您的活动中实施它:

public class MainActivity implements OnFinishCallback {
    @Override
    public void onFinish() {
        //remove survey item from adapter 
    }
}

并将此回调传递给Survey片段,该片段将在需要完成时调用onFinish()方法。