EventBus+FragMent创建页面

在MainActivity中写入以下方法并调用
可以实现fragment的创建

注册和销毁

@Override
protected void onDestroy() {
    super.onDestroy();
    EventBus.getDefault().unregister(this);
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    initView();
    EventBus.getDefault().register(this);

增加fragment

 public  List newsFragmentList = new ArrayList<>();
    public  Fragment currentFragment;

 EventBus.getDefault().post(new MyEvent(new ShoppingMsgFragment()));
 EventBus.getDefault().post(newDismissEvent(ShoppingMsgFragment.this));

    @Subscribe
    public void eventShopMsg(MyEvent event){
        if (mVpContent.getVisibility() != View.GONE) {
            mVpContent.setVisibility(View.GONE);
        }
        FragmentTransaction transaction = fragmentManager.beginTransaction();
        if (currentFragment != null) {
            transaction.hide(currentFragment);
        }
        currentFragment = event.getNewFragment();
        newsFragmentList.add(currentFragment);
        transaction.add(R.id.frameLayout,currentFragment);
        transaction.addToBackStack(null);
        transaction.commit();
    }

将fragment消失

 @Subscribe
    public void eventDiss(DismissEvent event){
        Fragment dismissFragment = event.getDismissFragment();
        newsFragmentList.remove(dismissFragment);
currentFragment=null;
        if (newsFragmentList.size()>0) {
            currentFragment = newsFragmentList.get(newsFragmentList.size() - 1);
        }else if (mVpContent.getVisibility() != View.VISIBLE){
            mVpContent.setVisibility(View.VISIBLE);
        }
        fragmentManager.popBackStack();
    }

手机返回出现问题解决的事件

  @Override
    public void onBackPressed() {
        super.onBackPressed();
        newsFragmentList.remove(currentFragment);
        currentFragment=null;
        if (newsFragmentList.size()>0) {
            currentFragment = newsFragmentList.get(newsFragmentList.size() - 1);
        }else if (mVpContent.getVisibility() != View.VISIBLE){
            mVpContent.setVisibility(View.VISIBLE);
        }
    }```

**消失隐藏,清除**

private void clearAll(int position) {

    for (int i = 0; i < newsFragmentList.size(); i++) {
        fragmentManager.popBackStack();
    }
    newsFragmentList.clear();
    currentFragment = null;
    if (mVpContent.getVisibility() != View.VISIBLE) {
        mVpContent.setVisibility(View.VISIBLE);
    }
    mVpContent.setCurrentItem(position);
}


你可能感兴趣的:(安卓)