不同的onBackPressed用于活动和片段

时间:2018-06-20 17:56:09

标签: java android

我的应用流程为:

活动A->活动B(此活动包含一些按钮,可在其上单击打开的片段)

我希望当我在活动B的片段上进行操作时,应向后按压,流应该流向活动B,而当我在活动B上进行操作时,则应按背面的应用程序退出。

我当前正在使用:

@Override
public void onBackPressed() {

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

    else {
        super.onBackPressed();
    }
}

当按回活动B的片段时,它工作正常,但是当按回活动B时,它将进入活动A(由于某种原因,活动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();
        }
    });

1 个答案:

答案 0 :(得分:2)

在从finish()声明Activity B的意图后立即调用ActivityA

喜欢

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

您可以在活动b中为backstack编写代码,只需在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();