我的应用流程为:
活动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();
}
});
答案 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();