查找上一个活动片段(代码片段)

author author     2022-12-27     568

关键词:

我有4个片段。以下是导航流程

[片段1] - > [片段2] - > [片段3]

[片段4] - > [片段3]

如果用户在[片段3]的背面按4从片段3(即[片段4] - > [片段3])进入片段3,它应该转到[片段1]。

我想如果我能够找到之前的片段那么将很容易重定向到[fragment 1]。有什么方法可以找到已被替换的先前片段是什么?

我尝试过fragmentManager.getBackStackEntryAt(fragmentManager.backStackEntryCount - 1),但只显示当前片段的一个条目。

片段管理器看起来像这样。

FragmentManager Object

onBackPressedFragment 3我做了这样的事。

override fun onBackPressed(): Boolean 
    args.host.hideKeyboard()

    if (redirectToProductList) 
        args.host.activity?.let 
            if (it.supportFragmentManager.popBackStackImmediate(null, FragmentManager.POP_BACK_STACK_INCLUSIVE)) 
                openFirstFragment(it, SupportFragment(MainActivity.SalesRepProduct))
                return true
            
        
    
    return args.host.childFragmentManager.popBackStackImmediate()

答案

我已经发布了这个问题并在那里提供答案请尝试搜索

资源 :

Link

override fun onBackPressed() 
    if (tabLayout.selectedTabPosition != 0) 
        tabLayout.getTabAt(0)?.select()
     else 
        super.onBackPressed()
    

另一答案

我解决了这个问题。我没有将片段添加到backstack中。

fragmentManager.beginTransaction()
            .addToBackStack(newFragment.javaClass.name)
            .commit()

然后我发现了之前的片段。

override fun onBackPressed(): Boolean 
    args.host.hideKeyboard()
    val index = args.host.fragmentManager.backStackEntryCount - 2
    if (index >= 0) 
        val prevFrag = args.host.fragmentManager.getBackStackEntryAt(index)
        if (prevFrag.name == SearchContainerPresenter::class.java.name)
            args.host.activity?.let 
                if (it.supportFragmentManager.popBackStackImmediate(null, FragmentManager.POP_BACK_STACK_INCLUSIVE)) 
                    openFirstFragment(it, SupportFragment(MainActivity.SalesRepProduct))
                    return true
                
            
        else
            return args.host.childFragmentManager.popBackStackImmediate()
    
    return args.host.childFragmentManager.popBackStackImmediate()

另一答案

你可以这样的用户监听器,

supportFragmentManager.addOnBackStackChangedListener 
    val fragment = supportFragmentManager.findFragmentById(R.id.container)
    //Write your logic here

如何打开另一个活动而不会丢失主要活动布局上的项目?(代码片段)

我有两个空的活动名称主要活动和另一个活动。它们都有不同的内容。在主要活动布局上,我有一个按钮和一个横幅广告。在我的另一个活动布局上,我有一个填充布局宽度和高度的imageview。我的问题是,如何在主布局上用我的... 查看详情

android7.0intent向下一个活动传递数据返回数据给上一个活动(代码片段)

1.0可以利用Intent吧数据传递给上一个活动,新建一个叫“hellotest01”的项目。新建活动FirstActivity,勾选“GenerateLayoutFile”和“LauncherActivity”。 修改AndroidMainifest.xml中的内容:<activityandroid:name=".FirstActivity"android:label="第一个... 查看详情

想要使用片段从导航抽屉活动移动到另一个屏幕,以在所有屏幕上显示抽屉(代码片段)

...erflow和其他许多方法,但仍然没有成功。然后我必须从第一个片段移动到第二个片段,依此类推,直到需要导航抽屉。当我从我的活动移动到任何片段时,我想替换除抽屉之外的整个视图。每个片段都有自己的layout.xml,就像一... 查看详情

php使用一个用于javascript地图显示的googlemapsapi密钥(活动日历)和用于场地地理位置查找的不同api密钥(事件(代码片段)

查看详情

关闭活动后如何刷新上一个片段?

】关闭活动后如何刷新上一个片段?【英文标题】:Howtorefreshpreviousfragmentafterclosinganactivity?【发布时间】:2014-12-1006:08:54【问题描述】:我有一个片段会引发一个活动,用户可以在其中插入一些细节。当用户终止填充数据时,活... 查看详情

将数据传递到上一个活动并使用相同的按钮移动到下一个(代码片段)

...让我们说一下activity1,activity2和activity3。我在activity2上有一个按钮,点击该按钮我想将一些数据发送到activity1并转到activity3。我使用以下方法成功地将数据从2传递到1:button1.setOnClickListener(newView.OnClickListener()@OverridepublicvoidonClick(... 查看详情

活动选择-贪心(代码片段)

...活动都需要使用学校的大礼堂,在同一时间,礼堂只能被一个活动使。由于有些活动时间上有冲突,学校办公室人员只好让一些活动放弃使用礼堂而使用其他教室。  现在给出n个活动使用礼堂的起始时间Bi和结束时间Ei(Bi<Ei)... 查看详情

如何使用活动显示的片段转到上一个活动

】如何使用活动显示的片段转到上一个活动【英文标题】:HowcanIgotopreviousactivitywiththefragmenttheactivitywasshowing【发布时间】:2014-10-2023:28:37【问题描述】:我有两个活动,活动A和活动B。现在活动A有3个Fragments,其中一个启动活动B... 查看详情

sh查找云端服务器上的所有访问日志,并将它们合并为一个输出(代码片段)

查看详情

从片段返回到上一个活动 onclick back button

】从片段返回到上一个活动onclickbackbutton【英文标题】:gobackfromfragmenttopreviousactivityonclickbackbutton【发布时间】:2015-05-2505:35:02【问题描述】:如何从片段返回到上一个活动?我不能在片段中覆盖这个函数或者有其他方法,帮助... 查看详情

在导航抽屉上调用不是片段活动的活动

...022-01-1013:07:02【问题描述】:我是AndroidStudio的新手。我有一个导航抽屉,我试图调用一个不是片段活动的活动,我对此感到困惑。我想调用RecipeActivity以添加到导航抽屉中,但该活动扩展了AppCompatActivity 查看详情

如何根据配置单元中的3列查找上一个日期值(代码片段)

我想基于3列找出目标表中的上一个日期值。附带的屏幕截图中解释了示例和场景。请帮忙。答案这可以用lag完成。selectt.*,lag(date)over(partitionbyid,function_id,keyorderbydate)asprev_datefromtblt另一答案检查以下内容是否适合您。>createtablevi... 查看详情

在一个活动中加载单个片段两次,从本地json文件中加载2个问题(代码片段)

我有一个调查问题的本地json,我创建了一个片段和活动,我希望在活动上显示下一个和上一个按钮的片段。我的问题是我想同时用两个不同的问题显示相同的片段,并保留下一个和前一个的状态。对于前我有15个问题的列表,我... 查看详情

Android:从片段调用活动

...活动。在它的右侧,当一个选择要为新文件录制时,调用查找活动。Whentheanyofthelistedfileisselectediamusin 查看详情

如何向整个活动添加滚动视图?(代码片段)

...在活动布局上的所有内容周围添加滚动视图,但它给了我一个错误,说它只能放在一件事上。我的活动,有一个标题textview然后是一个图像,然后是一个描述文本视图,你无法阅读整个描述,因为它很长并且低于我的屏幕边缘。... 查看详情

php活动日历:社区活动门票:在社区活动列表视图上显示“付款选项”按钮。(代码片段)

查看详情

php活动日历:社区活动门票:在社区活动列表视图上显示“付款选项”按钮。(代码片段)

查看详情

java代码在片段活动中不起作用

...2014-02-0914:10:09【问题描述】:我尝试在android平台上创建一个包含3个片段的应用程序当我尝试在片段类中输入一些java代码时,我总是出现这个错误:java.lang.NullPointerException例如,用一个简单的按钮来改变视图:packagecom.test;imp 查看详情