将Android片段放在后台

将Android片段放在后台,android,android-fragments,Android,Android Fragments,我正在处理android片段,当我按下后退按钮时,我无法将片段保留在Backback I-e中。它将我推出启动片段的活动,我想返回到backpress上的前一个片段 到目前为止,我已经尝试过了,但我无法将碎片保留在后台 getActivity().getFragmentManager().beginTransaction() .replace(R.id.mainContainer, searchResultsFragment) .addToBa

我正在处理android片段,当我按下后退按钮时,我无法将片段保留在Backback I-e中。它将我推出启动片段的活动,我想返回到backpress上的前一个片段

到目前为止,我已经尝试过了,但我无法将碎片保留在后台

getActivity().getFragmentManager().beginTransaction()
             .replace(R.id.mainContainer, searchResultsFragment)
             .addToBackStack(null)
             .commit();

您必须在活动中覆盖onBackPressed。仅将片段添加到后堆栈是不够的

@Override
public void onBackPressed() {
    FragmentManager fragmentManager = getSupportFragmentManager();
    if(fragmentManager.getBackStackEntryCount() != 0) {
        fragmentManager.popBackStack();
    } else {
        super.onBackPressed();
    }
}

在调用
commit()
提交事务之前,应该向backstack
addToBackStack(null)
添加片段,就像在提供的代码中所做的那样

然后重写
onBackPressed()
以从堆栈中弹出片段

您面临的问题是,您与
FragmentManager进行交易

getActivity().getFragmentManager().beginTransaction()
             .replace(R.id.mainContainer, searchResultsFragment)
             .addToBackStack(null)
             .commit();
但是您在onbackpress()中使用了
SupportFragmentManager

@Override
public void onBackPressed() {
    if (getSupportFragmentManager().getBackStackEntryCount() > 0 ) {
        getSupportFragmentManager().popBackStack();         
    }
}
要解决您的问题,您必须知道您匹配的片段类型(在您的案例中是searchResultsFragment),我的意思是它是扩展片段还是支持片段

以防扩展片段支持

import android.support.v4.app.Fragment;
您应该在事务和onBackPressed中使用
getSupportFragmentManager()

以防您使用片段

import android.app.Fragment;

您应该在事务和反压中使用
getFragmentManager()

感谢兄弟的否决投票,这真的很有帮助,但没有提出任何建议:/这不是我投票,而是他为什么这么做,因为您必须在发布问题之前搜索,不管你的问题怎么简单,我都会回答it@MinaFawzy我确实找了很多,但我什么也找不到,所以我最后不得不问这里!感谢您的帮助,我将尝试,然后在此告诉您我按照您告诉我的在Backpressed上重写以及其他答案给出的示例代码所做的操作,但是“fragmentManager.GetBackbackEntryCount()”始终返回“0”try add executePendingTransactions()在提交我们之后或之前。感谢您的回答,我会检查它,然后在此通知您FragmentManager。GetBackbackEntryCount()总是返回“0”和.addToBackstack(null)?