当前位置: 首页 > 知识库问答 >
问题:

以编程方式返回到后栈中的前一个片段

暨嘉
2023-03-14

假设我有一个以编程方式添加片段的活动:

private void animateToFragment(Fragment newFragment, String tag) {
    FragmentTransaction ft = getFragmentManager().beginTransaction();
    ft.replace(R.id.fragment_container, newFragment, tag);
    ft.addToBackStack(null);
    ft.commit();
}

回到之前可见的片段的最佳方式是什么?

我在Android的button click上发现了触发后退按钮功能,但我认为模拟后退键事件不是正确的方法(我也无法让它工作):

dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK));

调用finish()只会关闭我不感兴趣的活动。

还有更好的方法吗?

共有3个答案

蓝泰平
2023-03-14

当我们更新/添加片段时,

应该包括。addToBackStack()

getSupportFragmentManager().beginTransaction()
    .add(detailFragment, "detail") // Add this transaction to the back stack (name is an optional name for this back stack state, or null).
    .addToBackStack(null)
    .commit();

然后,如果我们给出getFragments。如果我们添加/更新片段并移回当前屏幕,popBackStackImmediate()将返回true。

薛寒
2023-03-14

为了详细说明提供的其他答案,这是我的解决方案(放在活动中):

@Override
public void onBackPressed(){
    FragmentManager fm = getFragmentManager();
    if (fm.getBackStackEntryCount() > 0) {
        Log.i("MainActivity", "popping backstack");
        fm.popBackStack();
    } else {
        Log.i("MainActivity", "nothing on backstack, calling super");
        super.onBackPressed();  
    }
}
龚凌
2023-03-14

查看getFragmentManager()。popBackStack()方法(有几种方法可供选择)

http://developer.android.com/reference/android/app/FragmentManager.html#popBackStack()

 类似资料:
  • 问题内容: 我将用户带到单击按钮的页面上。此页面是 UITableViewController 。 现在,如果用户点击一个单元格,我想将他推回到上一页。 我想到了类似的东西,但这似乎是个坏主意。 正确的方法是什么? 问题答案: 斯威夫特3: 如果您想回到上一个视图控制器 如果要返回到根视图控制器

  • 我通过单击按钮将用户发送到一个页面。这个页面是一个UITableViewController。 现在,如果用户点击一个手机,我想把他推回到上一页。 我想到了像但这似乎是个坏主意。 正确的做法是什么?

  • 我正在建立一个简单的应用程序,我想从片段回到物理按钮的活动。我该怎么做?我试图杀死碎片,但它不起作用。

  • 我有一个4类的代码,甲板,卡,玩家和测试。 我的想法是创建一个21点游戏,玩家有你的“手”与甲板上提供的卡。我的代码工作正常,但是我只想要一个方法返回两个不同的数组。 我的代码简历: 牌:一张牌(价值,花色) 套牌:创建一个包含 52 张牌的牌阵列。一个类的方法提供Cards()来获取玩家的卡。 玩家:一类有牌阵列的“手牌” 问题在哪里? 看“Deck”类,我使用了2个方法,provideCard

  • 问题内容: 有没有办法将应用程序发送到后台?与如何调用类似,我有一些UI元素可以测试。有谁知道这是否完全可能? 问题答案: 我建议退房。这是您可以按“主页”按钮然后重新启动应用程序的方法

  • 问题内容: 我尝试了google,但是发现它获取了 当前 进程的父pid 。 我需要类似的东西,有这样的东西吗?基本上获取某些进程的pid,然后返回父进程的pid。 问题答案: 我认为最简单的方法是打开“ / proc”并解析内容。 您将找到ppid作为/ proc / pid / stat的第四个参数