首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我想要在一个片段之间传输数据到另一个片段,但是我没有得到任何视图发现异常?

根据您的描述,您想要在一个片段之间传输数据到另一个片段,但是没有得到任何视图发现异常。以下是我对这个问题的完善且全面的答案:

在Android开发中,如果您想要在一个片段(Fragment)之间传输数据到另一个片段,可以通过以下几种方式实现:

  1. 使用接口(Interface):您可以在发送数据的片段中定义一个接口,并在接收数据的片段中实现该接口。通过接口的回调方法,可以将数据传递给接收数据的片段。这种方式适用于两个片段之间的直接通信。您可以在接口中定义方法来传递数据,例如:
代码语言:txt
复制
public interface DataTransferListener {
    void onDataTransfer(String data);
}

在发送数据的片段中,实现该接口并调用回调方法:

代码语言:txt
复制
DataTransferListener listener;

public void sendDataToFragment(String data) {
    listener.onDataTransfer(data);
}

在接收数据的片段中,设置监听器并实现回调方法:

代码语言:txt
复制
public void setDataTransferListener(DataTransferListener listener) {
    this.listener = listener;
}

@Override
public void onDataTransfer(String data) {
    // 处理接收到的数据
}
  1. 使用共享ViewModel(Shared ViewModel):ViewModel是用于在不同组件之间共享数据的一种架构组件。您可以创建一个共享ViewModel,并在发送数据的片段和接收数据的片段中都使用该ViewModel。通过在ViewModel中定义LiveData或MutableLiveData对象,可以在片段之间传递数据。这种方式适用于需要在多个片段之间共享数据的情况。

在发送数据的片段中,将数据设置到ViewModel中:

代码语言:txt
复制
SharedViewModel sharedViewModel;

public void sendDataToFragment(String data) {
    sharedViewModel.setData(data);
}

在接收数据的片段中,观察ViewModel中的数据变化:

代码语言:txt
复制
SharedViewModel sharedViewModel;

@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    sharedViewModel = new ViewModelProvider(requireActivity()).get(SharedViewModel.class);
    sharedViewModel.getData().observe(getViewLifecycleOwner(), new Observer<String>() {
        @Override
        public void onChanged(String data) {
            // 处理接收到的数据
        }
    });
}
  1. 使用Bundle参数:如果您只需要在片段之间传递少量数据,可以使用Bundle参数。在发送数据的片段中,创建一个Bundle对象,并将数据放入Bundle中。然后使用setArguments()方法将Bundle设置到接收数据的片段中。在接收数据的片段中,可以通过getArguments()方法获取Bundle,并从中获取数据。

发送数据的片段中:

代码语言:txt
复制
Bundle bundle = new Bundle();
bundle.putString("data", data);
receiverFragment.setArguments(bundle);

接收数据的片段中:

代码语言:txt
复制
Bundle bundle = getArguments();
if (bundle != null) {
    String data = bundle.getString("data");
    // 处理接收到的数据
}

以上是在Android开发中实现片段之间传输数据的几种常见方式。具体使用哪种方式取决于您的需求和项目架构。希望对您有帮助!

如果您对Android开发、云计算或其他相关话题有更多问题,欢迎继续提问。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

使用 CSS Gradient 的缺陷实现噪点画面

这是中间一个图的升级版,且没有任何地方是平滑的。我们将它设置更小的值并全屏查看。 代码片段 我想你知道这是怎么回事。...但是,我们减少到很小很小的值 -- 0.0001% -- 然后突然就没有了渐变,只有纯粹的颗粒感。 代码片段 不错哦!我们通过一行 CSS 渐变的代码就完成了噪点效果。...代码片段 我们的噪点效果很完美了!即使我们很靠近查看。那里没有任何的渐变痕迹,而是美丽的颗粒静态噪点。我们只是将这个反锯齿的缺陷变成了一个巧妙的功能。 现在,我们实现了这个效果。...我使用同样的技术在一个 div 实现 CSS 艺术挑战: 代码片段 图片粒子过滤 另一个想法是,将噪点应用在图片上,以获得时代感。鼠标移动到图片上可查看原图。...我们实际上并没有学到什么“新“的内容,但是我们对 gradients 做了些怪异的更改,并将其变成有趣的东西。我想重申的是:我并不会在真实的项目中使用这些,因为谁知道何时解决这个反锯齿的问题呢。

94520

基础渲染系列(七)——阴影

(一些光线被阻挡了) 当一个物体位于光源和另一个物体之间时,可能会阻止部分或全部光线到达该另一个物体。照亮第一个对象的光线不再可用于照亮第二个对象。结果,第二物体将保持至少部分不发光。...1.1 启用阴影 没有阴影,很难看到对象之间的空间关系。为了说明这一点,我创建了一个带有几个拉伸立方体的简单场景。在这些立方体上方放置了四行球体。...当然,这些数据存储在不同的剪辑空间中,但是我们知道这些空间的相对位置和方向。这样我们就可以从一个空间转换为另一个空间。这使我们可以从两个角度比较深度测量值。从概念上讲,我们有两个向量在同一点结束。...是的,但是Unity可以对齐贴图,以便在相机位置更改时,让纹素看起来静止不动。当然,级联带确实会移动,因此带之间的过渡点会发生变化。但是,如果你没有注意到这些频段,那么你也不会注意到它们在移动。...为了弄清楚一个片段到灯的距离,我们必须构造一个从灯到片段的世界空间向量。可以通过在每个顶点上创建这些向量并进行插值来实现。这需要一个附加的内插器。 ?

4.2K30
  • Unity通用渲染管线(URP)系列(十五)——粒子(Color and Depth Textures)

    证明这一点的最简单方法是将起始颜色设置为在黑白之间随机值。但是,这样做目前不会更改粒子的外观表现。为了完成这项工作,我们需要在着色器中添加对顶点颜色的支持。...(使用了顶点色,没有和有距离排序) 现在,我们得到了彩色的粒子。现在,粒子分类成为了新的问题。如果所有粒子的颜色相同,则绘制顺序无关紧要,但是如果它们不同,则需要按距离对它们进行排序以得到正确的结果。...2.1 片段数据 我们已经在out片段函数中有了片段深度。它是通过带有SV位置语义的float4提供的。我们已经使用了它的XY组件来进行抖动,但是现在让我们完全地使用片段数据。...但是我们一开始只是始终启用它。 ? 创建一个新的CopyAttachments方法,该方法将在需要时获取一个临时的重复深度纹理,并将深度附件数据复制到其中。...但是现在,当没有Post FX处于活动状态时,渲染将失败,因为我们仅渲染到中间缓冲区。还需要执行到摄像机目标的最终复制。

    4.7K20

    多数消费者无法分辨8K与4K的区别

    在正常的座位距离下,人眼在屏幕上能辨别的分辨率是有限度的,增加超过这个限度的像素密度并没有任何好处。 但是,这一限制到底在哪里呢?...在每个场次中,参与者从一个片段中看到一个序列,然后从另一个片段中看到一个序列,依此类推,直到所有21个序列都呈现出来。在任何时候,他们都没有看到来自同一片段的两个序列一个接一个地播放。...对一个人来说“slightly better”的东西可能对另一个人来说是“much better”。最核心的是,我们希望看到在任何级别上得分“相同”和“更好”的人之间的区别。...图7的左半部分描绘了结果数据的另一有趣的视图。图中显示了4K看起来比8K好,两个版本看起来一样,8K看起来比4K好的结果分布。...这项研究没有解决的一个问题是,显示技术是否对8K的识别能力有影响,如果显示器是8K液晶电视而不是OLED,结果会有什么不同吗?我不这么认为,但这需要另一个研究来客观地确定。

    1.3K30

    进阶渲染系列(一)——平坦和线框着色(导数和几何体)

    这会导致在三角形之间不能共享顶点,因为那样它们也将共享法线。因此,我们最终得到了更多的网格数据。如果我们可以一直共享顶点将很方便。...实际上,我们可以在场景视图中看到线框,但是在游戏视图中却不能在构建中看到。因此,如果要在场景视图之外查看线框,则必须使用自定义解决方案。...这是通过特殊指令完成的,该指令告诉我们屏幕空间X或Y维度中任何数据片段在片段之间的变化率。 例如,我们当前片段的世界位置是 p 0 。屏幕空间X维度中下一个片段的位置是 p X 像素。...(具有更细轮廓线的线效果) 2.1 重心坐标 要向三角形边缘添加线条效果,我们需要知道片段到最近边缘的距离。这意味着有关三角形的拓扑信息需要在片段程序中可用。...但是,无论如何, My Lighting都不应参与。相反,通过在代码中插入我们自己的函数,可以通过另一个文件重新连接其功能。 要覆盖My Lighting的功能,必须在包含文件之前定义新代码。

    2.5K21

    安卓开发中的Model-View-Presenter(MVP模式)

    对于层之间的通信,在经典的MVP案例中,我们发现它是通过回调完成的(这将最终把我们的应用程序变成回调地狱),而在MVVM LiveData中使用,虽然它允许我们避免回调,但它没有为我们提供大量的操作符来操作数据...为了说明我在本文中解释的内容,参考GitHub上一个小的示例/项目(纯模型-视图-演示者):Pure MVP in GitHub.。...此外,使用lambdas用于视图与服务通信,使我们能够避免直接暴露这些组件之间的可观数据。...这里不讨论视图是由N个片段组成的活动的情况,因为每个片段都有M个演示者,我们可以假设视图是这些片段中的每一个,尽管它们随后被分组到一个片段中(甚至在另一个片段中)。...此外,这个视图模型可以直接将数据绑定注入到XML中,并使用LiveData将可视化组件绑定到LiveData的可观察对象。

    1.6K30

    基础渲染系列(二十)——视差(基础篇完结)

    片段着色器中已经有一个切线空间矩阵,但是该矩阵用于从切线转换为世界空间。在这种情况下,我们需要朝另一个方向进行转换。我们可以将另一个矩阵传递给片段程序,并在其中使用它,但这会变得越来越昂贵。...视线方向定义为从表面到相机的向量,已标准化。我们可以在顶点程序中确定此向量,然后将其转换为片段向量。我们推迟归一化,在插值之后,我们得到正确的方向。然后,仅需将切线空间视图方向添加为新的插值器。 ?...使用导数是一个高级主题,我不会在本教程中介绍。即使这样,片段也会并行处理。基本上,一起计算的一批片段的性能由需要最多迭代的片段确定。因此,任何潜在的性能提升都是可变且不可预测的,并且会因GPU而异。...但是,这仅发生在游戏视图和构建中,而不发生在场景视图中。请注意,标准着色器也存在此问题,但是当使用弱偏移视差效果时,你可能不会立即注意到它。 ?...对顶点法线和切向量不进行归一化对我们来说只是一个问题,因为我们正在将视图向量转换为顶点程序中的切线空间。对于其他所有内容,数据在使用前均已标准化。 解决方案是在构造对象到切线矩阵之前对向量进行归一化。

    3.2K20

    Android入门教程 | Fragment 基础概念

    onPause() 系统会将此方法作为用户离开片段的第一个信号(但并不总是意味着此片段会被销毁)进行调用。通常,应在此方法内确认在当前用户会话结束后仍然有效的任何更改(因为用户可能不会返回)。...正确的切换方式是 add(),切换时 hide(),add()另一个 Fragment;再次切换时,只需 hide()当前,show()另一个。...基于以上不同的特点我们在使用的使用一定要结合着生命周期操作我们的视图和数据。 5....fragment.setArguments()传递到fragment中; 在该Fragment中通过调用getArguments()得到bundle对象,就能得到里面的值。...->onResume 的生命周期,明明 Fragment 没有显示却已经到onResume 了,在某些情况下会出现问题。比如数据的加载时机、判断 Fragment 是否可见等。

    3.5K40

    ALHLS:Apple低延迟HLS技术

    这意味着在编码器输出数据之后,播放器可以更快地获得较小的帧组,而不是花费2到10秒的时间以等待帧准备就绪之后再下载它们。...推送分片 在最基本的层面,HLS依赖于通过轮询播放列表文件来检查新的可用段,结束一次轮询之后是另一个用以检索新片段的HTTP往返。...更快的码率转换 最后,Apple引入了一个小功能,允许特定节目的播放列表响应包含有关最新块和可用于另一个节目片段的信息——理论上这允许播放器跳转到另一个节目,无需请求制作完成的播放列表就能立即启动切换。...这些变化使得ALHLS相对于传统HLS方法的最大不同是ALHLS需要更多建立在播放列表生成过程和编码器编码过程之间的数据交换。...我从工作中得到的经验是,Apple不想以上述任何麻烦的方式解决此问题,只留下允许AVPlayer(Apple的流式传输框架)能够测量分块传输响应的各个块的性能。

    1.9K30

    如何使用Markdown设置图片样式

    这篇文章介绍了多种使用Markdown来格式化图像的方法,从蛮力到专有语法扩展、不明智的修改,以及介于两者之间的各种方法。 这是你如何插入一个图像在Markdown: !...标准的Markdown并没有提供更多的功能,但是网站通常需要宽度、高度和CSS类属性。 本文的其余部分致力于解决这些缺点的各种方法。为了激发这个讨论,我将使用一个应该以较小尺寸显示的大图像示例。...当它在网站的URL中使用时,它可以滚动页面,将所需的部分内容显示到视图中,但是您也可以将其添加到图像中。当您这样做时,它实际上对浏览器来说什么也不做,而且一般用户也不会在浏览器的地址栏中看到它。...在这里,我们将添加一个缩略图片段到图像的源URL: !...但是,CSS和JavaScript可以读取片段并使用它。

    4.4K20

    实现支持低延时 HLS 的播放器

    比如说,在网络空闲期间发送的数据在块之间被引入的问题,这个问题迫使我们保留带宽预测和 ABR 机制。但是还有一些问题非常特殊。 回到那个时候,数据必须尽可能快地通过管道传输到解码器。...然后就是一些现在看来很常见的问题,比如说卡顿,慢启动等等问题,但是在 2016 年处理起来还是很困难,因为在之前没有任何人进行这方面的研究。 到了 2017 年,低延时得到了更多的关注。...ABR 部分 过去,你会有一个片段,它在 HLS 中始终在源上完全可用。这个片段发布到播放列表中,你可以完全以一个稳定且快的下载速度获取它。所以基本上可以记录响应发送和启动请求的时间。...所以可以这么想,带宽的估计仍然很简单,但是这其中有一个重要的问题。这个问题在低延时 dash 中也存在。因为它是阻塞响应,这不是一件坏事,但是这是在进行低延迟时需要牢记的事情。...虽然上述机制看起来很简单,但是在低延时的 HLS 中并没有我们想象中的这么简单。当你想要切换传输视频块的质量时,你需要请求和下载播放列表的更新,这样会有更新数据往返的额外开销。

    3K30

    ALHLS:Apple低延迟HLS技术

    这意味着在编码器输出数据之后,播放器可以更快地获得较小的帧组,而不是花费2到10秒的时间以等待帧准备就绪之后再下载它们。...推送分片 在最基本的层面,HLS依赖于通过轮询播放列表文件来检查新的可用段,结束一次轮询之后是另一个用以检索新片段的HTTP往返。...更快的码率转换 最后,Apple引入了一个小功能,允许特定节目的播放列表响应包含有关最新块和可用于另一个节目片段的信息——理论上这允许播放器跳转到另一个节目,无需请求制作完成的播放列表就能立即启动切换。...这些变化使得ALHLS相对于传统HLS方法的最大不同是ALHLS需要更多建立在播放列表生成过程和编码器编码过程之间的数据交换。...我从工作中得到的经验是,Apple不想以上述任何麻烦的方式解决此问题,只留下允许AVPlayer(Apple的流式传输框架)能够测量分块传输响应的各个块的性能。

    1.4K10

    低广播延迟及实现协议

    另一个前提条件是保证传递:所有丢失的数据包都应该被恢复,并且在开放网络上的传输不会造成任何问题。 越来越多的服务正在迁移到云中,以节省租金,电费和硬件成本。...而且,如果客户端和服务器端不支持选择性确认(SACK)规范,则将重新发送整个TCP数据包链-从丢失的数据包到以较低速率接收的最后一个数据包。...同样,使用TCP进行广播的应用程序本身对协议本身没有任何控制(超时,重新广播的窗口大小),因为TCP传输被实现为单个连续流,并且在错误发生之前,应用程序可能会“冻结”无限期 而且更高级别的协议没有配置TCP...图3.标准和分段的CMAF 要在配置文件之间切换,需要缓冲(最少2秒)。考虑到这一点以及潜在的交付问题,该标准的开发者声称潜在延迟少于3秒。...在对等方之间建立连接之前,它们将通过第三方(信号服务器)相互通信。然后,每个对等方通过查询“我是谁”来接近STUN服务器。(如何从外面找我?)。

    1.6K50

    基础渲染系列(十一)——透明度

    但是,当你使用这种材质选择一个四边形时,你会看到一个大致为圆形的选择轮廓。 ? (在不透明四边形上展示选中的轮廓) 如何得到选中的轮廓? Unity 5.5引入了新的选择轮廓的显示方法。...要在DoRenderingMode和DoMain之间进行通信,请添加一个布尔值字段,该字段指示是否应显示Alpha截止值。 ?...1.6 渲染模式tag 另一个细节是RenderType标签。此着色器标记本身不会执行任何操作。这是一个提示,告诉Unity它是哪种着色器。替换着色器使用它来确定是否应渲染对象。...再举一个例子,你可以使用着色器替换来查看是否有任何对象在视图中使用cutoff着色器,方法是将它们设置为亮红色或其他颜色。当然,这仅适用于具有适当RenderType标签的着色器。...但是,当多个半透明对象靠在一起时,会得到怪异的结果。例如,将两个四边形部分重叠,将一个四边形稍微重叠一点。从某些角度看,一个四边形似乎会切掉另一个。 ?

    3.8K20

    Easy Tech:什么是I帧、P帧和B帧?

    1.首先,我查看了帧1并找到了相匹配的球体,它似乎移动了一个帧宽(我知道要少一些)的距离,并向上移动了一些。这让我们得到了运动矢量。另外,包含两个球体的宏块之间的差异似乎非常小(猜测的)。...2.然后我在同一帧内搜索,马上意识到相同帧里面并没有包含球体的其他宏块。看来这次运气不太好,没有在同一帧内找到匹配的宏块。 从上面那些示例中,我们都学到了什么?...1.编码器搜索匹配宏块以减少需要传输的数据的大小,整个过程通过运动估计和补偿来完成,这使得编码器可以在另一帧内发现宏块的水平和垂直位移。...所以,编码器和解码器需要在内存中维护两个“顺序”或“序列”:一个将帧放置在正确的显示顺序中,另一个用于将帧按照编码和解码所需顺序放置。 由于重新排序的要求,B帧会影响解码器缓冲区的大小,并增加延迟。...我们在前面的部分了解到,I帧可以被独立地编码、解码,这使得它在视频压缩中得到广泛应用。 刷新视频质量 I帧的插入通常表示GOP(或视频片段)的结束。I帧压缩不依靠前一帧编码,从而可以刷新视频质量。

    3.4K20

    未来流媒体工作流的核心技术

    与 LL-DASH 播放器不同,苹果 LL-HLS 播放器并不利用 CMAF 片段,因为这些平台上的启发式传输依赖于全线速传输,但至少它们与之兼容,这使得 LL-HLS 和 LL-DASH 清单文件之间共享一套媒体片段成为可能...没有任何音频革命真正被电视化。...虽然有办法在 DASH 清单中发出定时元数据轨道的信号,但在 HLS 清单中仍然没有这种情况,如果这个问题得到解决,这可能会引发更广泛的采用。...虽然我相信我在这里提出的单播/多播混合传输方案可以成功实施,但通过多播传输媒体片段会带来另一个问题:它基本上阻止了 A/B 水印的工作,因为媒体片段对每个视频播放器都是一样的。...让我们用一个高层次的图表来总结一下,看看每种技术需要在哪里实施,主要的数据流是什么(而不是应该如何设计冗余/故障转移架构): 全文技术总体架构 我可能还需要 5 年的时间来实现这个愿景,但这很好,因为我还很年轻

    1.7K21

    如何使用Python中Django模板?

    如果我们在Django中想使用该模式,必须设置DIRS变量包含这个目录。我建议在项目的根目录中保留一个templates目录。如果你这样做,DIRS变量值将变成类似这样: ?...在这个例子中,只有一个头部标签根据用户是否验证来渲染。 for循环标签是另一个核心标签。在Django模板中,for循环会像你想象到的那样工作。 ?...有时在for循环中的某个特定的元素上,你可能想采取一些特别的操作。在模板中不能直接使用Python内建的enumerate函数,但是在for标签中有一个叫forloop的特别变量可用。...这些例子有少量的HTML,但是如果你被要求把styles.css样式表改为设计师制作的叫做 better_styles.css新的样式表怎么办?你需要在两个页面同时更新。...我非常喜欢linebreaks过滤器。如果你创建一个表格(下一篇文章我们会学习到)并且有一个文本区域用户可以输入新行,如果当渲染用户数据时你想显示那些新行,linebreaks过滤器会非常有用。

    3.9K30

    如何在React中写出更好的代码

    为你的应用程序中的每个状态设计简单的视图,当你的数据发生变化时,React会有效地更新和渲染正确的组件。 在这篇文章中,我将向你展示一些提示,以帮助你成为一个更好的React开发者。...当这些props没有得到它们所期望的数据时,你的错误日志会让你知道,你要么传入的东西不正确,要么期望的东西不存在,这使得错误的查找变得更加容易,特别是当你正在编写大量的可重复使用的组件时。...虽然没有任何硬性规定何时将你的代码移到一个组件中,但是不是存在一些问题: 你的代码的功能是否变得笨重了? 它是否代表它自己的东西? 你是否打算重复使用你的代码?...你可能已经注意到在上面的代码片段中,我没有将Profile声明为Component,而是将其称为PureComponent。 首先,让我们来看看无状态功能组件。...这一点的好处是: 我不需要写一个单独的函数。 我不需要在我的渲染函数中再写一个 "if "语句。 我不需要在组件中创建一个 "链接 "到其他地方。 编写内联条件语句是非常简单的。

    2.5K10

    RenderingNG中关键数据结构及其角色

    「视觉属性」会影响到渲染输出,并且「必须在本地帧树片段之间同步」 「不可变的片段树」是渲染管道的「布局阶段」的输出 它表示页面上所有元素的位置和大小 每个「片段」fragment代表一个DOM元素的一部分...虽然,主帧foo.com和子帧foo.com/other-page位于同一个帧树上,并且同一个「渲染进程」中处理他们的渲染过程,但是,它们位于不同的局部frame树片段local frame tree...由于这个原因,不可能在一次更新中为两者生成一个合成器帧。渲染过程没有足够的信息来将foo.com/etc生成的合成器帧直接合成到foo.com主帧的合成器帧中。...视觉属性更新步骤 ❝像设备比例因子device scale factor和视口大小viewport size这样的「视觉属性」会影响到渲染输出,并且「必须在本地帧树片段之间同步」。...另一个例子是存在「站点隔离」的多个iframe之间。这种嵌入是表面Surface通过完成的。 当一个合成器提交一个合成器帧时,它伴随着一个用于区分合成帧的标识符,即「表面ID」。

    2K10

    【深度】机器学习如何帮助Youtube 实现高效转码?

    智能并行处理 为了得到稳定的质量,可以在编码器之间沟通同一视频中不同分块的信息,这样每一个编码器都可以根据其处理块的前后块进行调整。...可以看出,CRF 和比特率之间存在一个明显的函数关系。事实上这是对使用三个参数的指数拟合的非常好的建模,而且该图也表明建模线(蓝线)与实际观察到的数据(点)拟合得非常好。...对这些特征的测量也包括来自输入视频片段的非常快速的低质量转码(能提供更丰富的信息)。但是,每个视频片段的特征和曲线参数之间的确切关系实际上非常复杂,不是一个简单的方程就能表示的。...其中的蓝线表示在每一个视频片段上都使用穷举搜索获取完美的 CRF 所得到的最好的情况。任何接近它的系统都是好系统。可以看到,在比特率为 20% 时,旧系统(绿线)的结果视频质量只有 15 %....我们不期望任何人注意到这一点,因为他们不知道它看起来还能是什么样。”

    1.4K50
    领券