问题标签 [fragment-lifecycle]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1402 浏览

java - 无法恢复活动 IndexOutOfBoundsException:索引 0 无效,大小为 0

我遇到了一个令人沮丧的问题。我有一个列表,它有一个适配器。我的适配器有一个 ArrayList,它包含对 ImageViews 的引用。

我的一个片段具有让用户从设备目录中选择文件的功能。onActivityResult 然后根据索引将返回的位图的缩略图设置为 imageView。因此,我从片段中调用了类似 adapter.getImageView(pos).setBitmap(bm) 的东西。

问题:当用户浏览照片库一段时间并最终选择时,我的应用程序崩溃并出现错误无法恢复活动,因为索引超出了我的 onActivityResult 的范围,因为它调用 getImageView(pos)

我认为正在发生的事情是,当用户浏览时间过长时,操作系统会回收我的应用程序并且它会被破坏,然后当用户回来时它会尝试重新创建它。奇怪的是我的适配器不是 Null,只是 ArrayList 未初始化。另一个奇怪的事情是我尝试调试并将 Log.v 放入该片段的 onResume() 和 onActivityResult 中。在这两种情况下,它似乎甚至在崩溃之前都没有进入这些方法。我很困惑......请帮忙。

这是完整的例外

0 投票
0 回答
38 浏览

android - 用户点击溢出菜单“设置点图标”会激活片段生命周期的哪一部分?

当用户点击“设置点”并弹出显示的菜单时,我希望计时器立即停止(即,在用户从列表中选择之前),但我不知道该放在哪里Timer.pauseTimer()

当用户点击下拉列表中的 4 个项目之一时,MainActivity.onOptionsSelected()它被激活并且我可以暂停计时器,但是如何在点击点图标的瞬间获得控制权?

我曾希望onAttach在 中做到这一点SettingsFragment,但没有。计时器滴答作响,屏幕如下所示。

在此处输入图像描述

0 投票
2 回答
5325 浏览

android - 片段替换事件?

我在执行时看到了

旧片段上没有调用任何方法。我试过:

  • 停止();
  • 暂停();
  • onDestroy();
  • onDetach();

没人叫,为什么?

0 投票
1 回答
524 浏览

android - 我什么时候可以使用 GoogleMap.getProjection().getVisibleRegion()?

我必须得到GoogleMap.getProjection().getVisibleRegion().latLngBounds

但是当应用程序启动时,它的值都为零。

我试图在 onViewCreatedonActivityCreated和 onStart of上得到这个SupportMapFragment,但它不起作用。我什么时候可以做到?是否有任何回调函数通知它何时准备就绪?任何帮助将不胜感激。

0 投票
1 回答
221 浏览

android - 当我点击设备返回时会调用 Fragment 的什么事件?

我在另一个片段 A 之上添加一个片段 B,如下所示:

问题是,当我在 B 上单击设备时,我需要 A 中的锚点。在这种情况下将调用哪个生命周期方法?

0 投票
0 回答
91 浏览

android - 如何自动启动功能片段生命周期

我有一个应用程序,我在其中附加了不同的片段和活动。在那个活动容器中,我正在替换不同的片段。

因此,在活动开始时,我替换了活动容器中的 MapFragment。后来我替换了其他片段,然后从主要活动中我再次替换了地图片段。虽然我认为我在片段中的映射实现错误,但我想知道并想做一些不同的事情,我认为因为我对片段没有更好的理解,所以我认为这就是为什么我得到空指针异常

到目前为止我做了什么

案例 1. 正如我在应用程序开始时所说的,我正在替换地图片段,但除了通过在谷歌地图 v2 中设置用户位置启用来显示用户当前位置之外什么都不做。所以点击地图的按钮让我们说显示其他位置,从服务器获取位置信息并在地图上绘制图钉。就地图片段而言,这很好用。

案例2

如果用户单击按钮让说“显示位置”而容器中有其他片段让说关于我们片段包含应用程序信息,所以现在在这个按钮上应该再次替换地图片段然后该片段中的功能这将从服务器下载位置并在地图上显示它们应该开始工作,因为我正在点击按钮

所以这个 GetLocations() 应该运行,但在这个阶段应用程序崩溃说空指针异常。并且在这个函数 myMapFragment.GetAllLocations("friendsLocation") 中需要我将其作为 getActivity() 的上下文,因为我必须使用需要上下文的 ION 库调用 web api,所以需要上下文。

所以这些是我的基本问题

  1. 我怎样才能知道片段已启动,然后我从 MainActivity 调用的函数应该在加载并启动 mapFragment 后运行,以便我无法在 getActivity() 中获取空上下文?

    1. 有没有其他方法可以做到这一点,我希望你理解我的需要,我想替换地图片段,我想通过将参数从主要活动传递给片段方法来同时调用片段方法,但是怎么做到呢 ?

    2. 我想到了一个想法,那就是在通过 Mainactivity 按钮替换地图片段时,我应该在 mapFragment 中设置一些静态值,比如说

public static boolean isLocationShouldDownload== flase //在地图片段中

我应该在替换片段时将其设置为真,然后当片段在运行状态后启动时,它应该检查这个变量是否为真(由主要活动设置)然后它应该下载并开始绘制引脚。但我不知道如何才能知道片段正在运行。

我不知道如何以及在何处实施我在第 3 点中所述的想法。

请与我分享您的想法并给我建议或分享我如何通过主要活动来完成此任务,该片段应替换和下载位置并在地图上显示它们而不会导致应用程序崩溃。

0 投票
2 回答
140 浏览

android - 在 commit() 之后是否调用 onCreate()?



我的应用程序是一个带抽屉的演示。八个行星抽屉导航演示。当您单击ListView抽屉上显示的项目时,片段上的行星图片会发生变化。

这是我的困惑:

我认为 will 的onCreateandonCreateView方法Fragment称为“ fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit();”的子序列。

但实际上,他们onItemClick()打完电话。为什么?提前致谢。

0 投票
0 回答
64 浏览

android - 具有已保存状态的片段主详细信息

在一个活动中,有一个包含对象列表的片段。此片段应替换为另一个包含列表项详细信息的片段。当细节片段处于活动状态并按下后退按钮时,应该恢复列表片段。

我的代码:

我观察到:

因此,当按下后退按钮时,我希望只调用onResume函数。实际上,它是如何在片段生命周期中描述的。但正如我所观察到的,oncreateView()也被调用了。这会导致片段完全重新加载,这不是想要的行为。那么,如何正确恢复主片段?

0 投票
0 回答
557 浏览

android - 从 onPause 恢​​复时在 TextureView 中播放视频崩溃

如果我暂停我的活动,返回时我会崩溃

我希望能够返回到视频停止的确切位置并从那里继续。我也希望它能够在定向中生存下来,它现在没有这样做。感谢您提供有关如何完成此操作的任何提示。我没有使用 ExoPlayer,因为我想继续使用 API 14,而不是碰到 API-16 并失去一些用户。

我的设置是Activity -> Fragment {TextureView}. 在纵向中,片段是屏幕的一半;在横向中,片段是全屏的。

代码片段

playVideoNow()从多个可能的位置调用,例如onResume在 BroadcastReceiver 上,因此检查是否一切正常。还有

0 投票
2 回答
57 浏览

android - 如果父 Activity 包始终具有传递给 Fragment 的对象,那么 Fragment 包的目的是什么?

我在 Activity 中有一个模型,并且该 Activity 中的 Fragment 需要访问它。我目前正在通过 Fragment 包传递它,但为什么我不能从片段中的 Activity 访问它?

例如,我将在片段 onCreate() 中使用此代码:

Model model = ((ActivityWithModel) getActivity).getModel();

一般来说,为什么不能总是Activity和Fragment共享对象的方法,或者Activity传递参数给Fragment的方法?为什么需要 Fragment 捆绑包?