片段中的后退堆栈不起作用



我有一个家庭活动,因为我正在根据需要替换片段。

在家庭活动中,我有主片段,然后从主片段替换传输片段

,从传输片段我替换传输列表片段。

现在,当我从传输列表片段按回时,我看到的是主片段而不是传输片段。

我已经将片段添加到后堆栈中,它仍然像这样工作。

家庭活动

public class HomeActivity extends AppCompatActivity{
    private boolean mBackPressCancelled = false;
    private static final long BACK_PRESS_DELAY = 10000;
    private long mBackPressTimestamp;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);
        toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        FragmentManager fragmentManager = HomeActivity.this.getFragmentManager();
        MainFragment fragment = new MainFragment();
        fragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
        fragmentManager.beginTransaction().replace(R.id.mycontainer, fragment,"MAIN_FRAGMENT").commitAllowingStateLoss();
    }
    @Override
    public void onBackPressed() {
        // Do nothing if the back button is disabled.
        if (!mBackPressCancelled) {
            // Pop fragment if the back stack is not empty.
            if (getFragmentManager().getBackStackEntryCount() > 0) {
                mTxtTitle.setVisibility(View.GONE);
                mLogo.setVisibility(View.VISIBLE);
                super.onBackPressed();
            }
            else {
                if (snackbar != null) {
                    snackbar.dismiss();
                }
                long currentTimestamp = System.currentTimeMillis();
                if (currentTimestamp < mBackPressTimestamp + BACK_PRESS_DELAY) {
                    super.onBackPressed();
                } else {
                    mBackPressTimestamp = currentTimestamp;
                    Toast.makeText(this,"press again",Toast.LENGTH_LONG).show();
                }
            }
        }
    }
}

传输片段:

       mBtnSearch.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            FragmentManager fragmentManager = getFragmentManager();
            TransportListFragment fragment1 = new TransportListFragment();
            fragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
            fragmentManager.beginTransaction().replace(R.id.mycontainer, fragment1).addToBackStack("G").commit();
        }
    });

这里出了什么问题,请帮忙。谢谢。

当您将

新片段添加到 BackStack 时,只需删除以下行:

fragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);

最新更新