Android 从同一列表片段调用列表片段,然后按backpress按钮
-->列表片段 B-->列表片段(从A调用) C-->与B相同(从B调用) 我使用这些函数从A调用BAndroid 从同一列表片段调用列表片段,然后按backpress按钮,android,list,android-fragments,fragment,Android,List,Android Fragments,Fragment,-->列表片段 B-->列表片段(从A调用) C-->与B相同(从B调用) 我使用这些函数从A调用B > FragmentManager fm = getFragmentManager(); > if (fm != null) { > FragmentTransaction ft = fm.beginTransaction(); > ft.replace(R.id.fr
> FragmentManager fm = getFragmentManager();
> if (fm != null) {
> FragmentTransaction ft = fm.beginTransaction();
> ft.replace(R.id.fragment_content, entryListFragment);
> ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
> ft.addToBackStack(null);
> ft.commit();
这是我的零碎活动课
public class FragmentTabActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fragment_tab);
Commons.globalContext = this;
FragmentManager fm = getSupportFragmentManager();
TabFragment tabFragment = (TabFragment) fm.findFragmentById(R.id.fragment_tab);
}
@Override
public void onBackPressed() {
FragmentManager fm = getSupportFragmentManager();
Log.e("BACK STACK", "" + fm.getBackStackEntryCount());
if(fm.getBackStackEntryCount() > 0) {
fm.popBackStack();
}
}
}
当我从B返回时,我可以返回A,但我不能从C返回到B。
谢谢你的帮助
编辑:我是这样解决的:
公共类FragmentTabActivity扩展了FragmentActivity{
private Global globalClass;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
globalClass = ((Global) getApplicationContext());
setContentView(R.layout.activity_fragment_tab);
getSupportFragmentManager().addOnBackStackChangedListener(
new MainOnBackStackChangedListener());
}
private class MainOnBackStackChangedListener implements
OnBackStackChangedListener {
public void onBackStackChanged() {
Log.e("Stack COUNT", "" +
getSupportFragmentManager().getBackStackEntryCount());
}
}
@Override
public void onBackPressed() {
try {
if (getSupportFragmentManager().getBackStackEntryCount() > 0) {
int lastIndex=globalClass.historyList.size()-1;
globalClass.historyList.remove(lastIndex);
for (int i = 0; i <globalClass.counterForBackPress; i++) {
getSupportFragmentManager().popBackStack();
}
} else {
FragmentTabActivity.this.finish();
}
} catch (Exception e) {
e.printStackTrace();
}
}
私有全局全局类;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
globalClass=((全局)getApplicationContext());
setContentView(R.layout.activity\u fragment\u选项卡);
getSupportFragmentManager().AddOnBackbackChangedListener(
新MainBackbackChangedListener());
}
私有类MainOnBackbackChangedListener实现
OnBackbackChangedListener{
BackbackChanged()上的公共无效{
Log.e(“堆栈计数”和“+
getSupportFragmentManager();
}
}
@凌驾
public void onBackPressed(){
试一试{
如果(getSupportFragmentManager().GetBackbackEntryCount()>0){
int lastIndex=globalClass.historyList.size()-1;
globalClass.historyList.remove(lastIndex);
对于(int i=0;我也面临同样的问题…我也面临同样的问题。。。