1

我的应用流程是:

活动 A -> 活动 B(此活动具有单击打开片段的按钮)

我希望当我在 Activity B 的片段上时,在后按时流应该是到 Activity B 时,当我在 Activity B 上时,在后按时应用程序应该退出。

我目前正在使用:

@Override
public void onBackPressed() {

    if(getFragmentManager().getBackStackEntryCount() > 0) {
        getFragmentManager().popBackStackImmediate();
    }

    else {
        super.onBackPressed();
    }
}

当在 Activity B 的片段上向后按下时它工作正常,但是当从 Activity B 向后按下时它会转到 Activity A(由于某种原因,Activity A 中也没有显示任何内容)。

编辑

我调用片段的代码:

faqsBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mLoginSubmit.setVisibility(View.GONE);
            Bundle b1 = new Bundle();
            b1.putString("ComingFrom","Login");
            android.support.v4.app.Fragment faqsFragment = new fragment11Faqs();
            faqsFragment.setArguments(b1);
            android.support.v4.app.FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
            transaction.replace(R.id.framelayoutfaqs,faqsFragment);
            transaction.addToBackStack(faqsFragment.toString());
            transaction.commit();
        }
    });
4

1 回答 1

2

您应该在声明其意图后立即finish()致电Activity BActivityA

像这样

Intent intent=new Intent(ActivityA.this,ActivityB.class);
startActivity(intent);
finish();

你的 backstack 代码在活动 b 中很好,只需在finish()之后添加super.onBackPressed();

@Override
public void onBackPressed() {

    if(getFragmentManager().getBackStackEntryCount() > 0) {
        getFragmentManager().popBackStackImmediate();
    }

    else {
        super.onBackPressed();
        finish();
    }
} 

这是将片段添加到后台堆栈的方法

 Fragment cameraEditing = new Editing(); FragmentManager
 fragmentManager = getFragmentManager(); FragmentTransaction 
fragmentTransaction = fragmentManager.beginTransaction(); 
fragmentTransaction.replace(R.id.cameraLayout, 
cameraEditing,"cameraEditing"); 
fragmentTransaction.addToBackStack("cameraEditing");
 fragmentTransaction.commit();
于 2018-06-20T18:23:44.630 回答