Java 针对活动和片段的不同OnBackpress
我的应用程序流程是: 活动A->活动B(此活动具有单击打开片段的按钮) 我希望,当我在活动B的片段上时,在反压时,流应该是活动B,当我在活动B上时,然后在反压时,应用程序应该退出 我目前正在使用:Java 针对活动和片段的不同OnBackpress,java,android,Java,Android,我的应用程序流程是: 活动A->活动B(此活动具有单击打开片段的按钮) 我希望,当我在活动B的片段上时,在反压时,流应该是活动B,当我在活动B上时,然后在反压时,应用程序应该退出 我目前正在使用: @Override public void onBackPressed() { if(getFragmentManager().getBackStackEntryCount() > 0) { getFragmentManager().popBackStackImmedi
@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();
}
});
从
ActivityA
像这样
Intent intent=new Intent(ActivityA.this,ActivityB.class);
startActivity(intent);
finish();
您可以在活动b中为backback编写代码,只需在super.onBackPressed()之后添加finish()
代码>
下面是如何将片段添加到backstack
Fragment cameraEditing = new Editing(); FragmentManager
fragmentManager = getFragmentManager(); FragmentTransaction
fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.cameraLayout,
cameraEditing,"cameraEditing");
fragmentTransaction.addToBackStack("cameraEditing");
fragmentTransaction.commit();
即使在我按back键退出应用程序时,也可能会重复此操作。是否要将片段添加到back stack?您能告诉我如何操作吗?当您编写添加或替换片段的代码时,您只需添加行-addtobackstack(),然后它会将其添加到backstack,您可以通过如何将片段添加到backstack来查看Google上的代码,然后此代码将正常工作。这是错误的,不要传递null,在那里传递片段名称,如果您看到如何将片段添加到backstack会更好
Fragment cameraEditing = new Editing(); FragmentManager
fragmentManager = getFragmentManager(); FragmentTransaction
fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.cameraLayout,
cameraEditing,"cameraEditing");
fragmentTransaction.addToBackStack("cameraEditing");
fragmentTransaction.commit();