Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >用另一个片段替换ViewPager

用另一个片段替换ViewPager
EN

Stack Overflow用户
提问于 2014-05-02 10:31:28
回答 2查看 1.3K关注 0票数 0

我的主要活动是一个带有选项卡的滑动视图,它可以直接用于切换到特定的片段。我基本上是跟着开发人员指南做的。到目前为止,这是很好的和预期的。

但是,我现在在菜单中有几个项(设置,约),它们不应该显示为ViewPager的一部分,而是应该完全替换ViewPager,并在操作栏中设置“导航向上”功能。按照这个问题的答案,我知道如何使用BackStack操作栏,并显示“导航向上”提供的功能。

然而,我不确定替换ViewPager的最佳方式是什么。据我所知,我可以尝试禁用所有ViewPager功能并使其看起来像一个片段(例如禁用选项卡和滑动),或者我可以使用嵌套片段。然而,我不相信这两种选择都是“干净的”。

也许我忽略了一些东西,并且有一种更直观的方法来实现同样的目标?你们对此有什么想法?你们是如何实现“基本”的呢?

P.S.:很明显,我可以用活动来做这个,但是我认为一个活动太重了,不适合简单的“关于”文本,在我看来,现在只要有可能,就应该尝试使用片段。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-02 10:42:06

正如我所理解的,您可以将ViewPager作为FrameLayoutadd() --FrameLayoutadd()--将addToBackState()方法中的"about“片段放在ViewPager之上。

您将避免禁用或刷新ViewPager。只需在上面添加一个新片段。

更新

我可以使用add()方法和添加的片段上的自定义background来实现这一点,以避免重叠问题。最后,将此背景设置为clickable,以防止后台ViewPager的单击事件。

请参阅我的活动布局:

代码语言:javascript
运行
AI代码解释
复制
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context="com.example.viewpageroverlap.MainActivity"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</FrameLayout>

我的菜单项事件:

代码语言:javascript
运行
AI代码解释
复制
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();
    if (id == R.id.action_settings) {
        getSupportFragmentManager().beginTransaction()
            .add(R.id.container, OverlapFragment.newInstance(990), null).addToBackStack(null).commit();
        return true;
    }
    return super.onOptionsItemSelected(item);
}

我的重叠片段布局:

代码语言:javascript
运行
AI代码解释
复制
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.viewpageroverlap.MainActivity$OverlapFragment"
    android:background="#FF0000"
    android:clickable="true" >

    <TextView
        android:id="@+id/section_label"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center" />

</RelativeLayout>  

这给了我这个输出:

注意:我使用了红色背景,但您可以尝试使用Android,避免使用文件中声明为android:background="@android:color/white"__的颜色。

带制表符的

您可以执行与上面相同的操作,并使用NAVIGATION_MODE_STANDARD重置导航:

代码语言:javascript
运行
AI代码解释
复制
if (id == R.id.action_settings) {
    getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
    getSupportFragmentManager().beginTransaction()
        .add(R.id.container, OverlapFragment.newInstance(990), null).addToBackStack(null).commit();
    return true;
}  

然后,当用户返回到ViewPager (当他按home按钮或硬件后退按钮)时,将旧导航重置为:

代码语言:javascript
运行
AI代码解释
复制
// do the same with android.R.id.home inside onOptionsItemSelected
@Override
public void onBackPressed() {
    // check if the "about" fragment is still displayed
    if(this.getSupportFragmentManager().getBackStackEntryCount() > 0) {
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        this.getSupportFragmentManager().popBackStack();
    }
}
票数 3
EN

Stack Overflow用户

发布于 2014-05-02 10:41:43

只需将ViewPager放在自己的片段中,并在希望使用常规片段事务更改为另一个片段时将其替换。

如果您打开addToBackStack,这些事务将以自然的方式对back按钮作出反应。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23434698

复制
相关文章
RTSP视频流显示(海康威视)
本文目的主要是想要实时显示海康威视的摄像头数据,笔者尝试了如下几种方式(部分未做完):
全栈程序员站长
2022/09/13
2.8K0
RTSP视频流显示(海康威视)
EasyCVR中RTSP视频流实际离线为什么网页还会显示在线?
防视频云服务平台EasyCVR作为一套较为成熟稳定的视频分发平台,不需要对现有监控架构做调整,支持CDN推流,灵活适应原有架构;且按需灵活扩展、收缩资源,免去了插件安装、浏览器限定等条件,实现了无插件、多平台自由观看回放。
TSINGSEE青犀视频
2021/12/17
4900
WireShark 抓取EasyNVR的 RTSP 流不显示 RTSP 的问题解决
在 EasyNVR 的开发过程中,经常需要针对 RTSP 流进行抓包分析问题,但是在部分情况下,发现 WireShark 并不会将 RTSP 包以协议的形式展现出现。比如下图中其实是 RTSP 流数据,但是只显示 TCP/UDP 包的数据。
TSINGSEE青犀视频
2021/07/26
1.7K0
如何在IE浏览器播放RTSP或RTMP流
好多开发者一直苦恼于如何在IE浏览器环境下,构建低延迟的RTSP或RTMP播放,对于RTSP流来说,好多公司通常的做法是把RTSP转RTMP,然后分发到RTMP服务器,然后服务器转http-flv出来,浏览器直接播放http-flv流,亦或通过flash控件直接播放RTMP流,还有就是,转hls流出来,缺点是hls流延迟更大。
音视频牛哥
2019/09/18
3.9K0
如何在IE浏览器播放RTSP或RTMP流
EasyCVR接入RTSP流后设备显示离线是什么原因?
EasyCVR视频融合平台基于云边端智能协同架构,具有强大的数据接入、处理及分发能力,平台支持海量视频汇聚管理、全网分发、按需调阅、鉴权播放、智能分析等视频能力与服务。平台开放度高、兼容性强、可支持灵活拓展与第三方集成,我们也提供了丰富的API接口供有需求的用户进行自由调用、集成与二次开发。
TSINGSEE青犀视频
2023/06/07
1670
保存rtsp视频流
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/02
2.2K0
html 播放rtsp 流rtsp2rtmp
在旧版的chrome上可以通过vlc插件来播放rtsp视频,但是更新到新版的chrome之后要想播放这个rtsp的视频就变得比较麻烦。如果google一下就会发现有各种解决方案,但是这些方案基本都是收费的。另外一个做法就是通过ffmpeg或者vlc播放器进行协议转换,如果是单个视频流可以通过vlc进行转换,转成http协议,直接通过video标签进行播放即可。但是如果要处理的视频流比较多,那就比较麻烦了。可以通过nginx+ffmpeg进行转换。
obaby
2023/02/22
3.8K0
rtsp 获取视频流 java_OpenCV – 如何捕获rtsp视频流
例如,我们有工作rtsp流测试像:“rtsp://184.72.239.149/vod/mp4:BigBuckBunny_115k.mov”(它在发布这篇文章的时候工作)
全栈程序员站长
2022/11/02
2.5K0
rtsp 获取视频流 java_Java获取rtsp视频流,实现rtsp流预览功能,并将视频流每帧保存成图片…
public static void testzc() throws FrameGrabber.Exception
全栈程序员站长
2022/11/07
3.3K0
RTSP 流相关工具介绍
RTSP (Real Time Streaming Protocol),实时流协议,是一种应用层协议,专为流媒体使用。本文将介绍 GStreamer, VLC, FFmpeg 这几个工具,如何发送、接收 RTSP 流。
GoCoding
2021/05/06
3.3K0
RTSP 流相关工具介绍
如何在VimVi中显示行号
Vim/Vi是许多软件开发人员和Linux系统管理员首选的文本编辑器。 默认情况下,Vim不显示行号,但可以轻松打开它们。Vim支持三种行编号模式,可帮助你浏览文件。除了标准的绝对行编号之外,Vim还支持相对行和混合行编号模式。 绝对行号 绝对行号是标准行号,它在每行文本旁边显示适当的行号。 要激活行编号,请设置数字标志: 按Esc键切换到命令模式。 按:(冒号),光标将移动到屏幕的左下角。输入set number或set nu,然后按Enter。 :set number 行号将显示在屏幕的左侧: 要禁用
入门笔记
2022/06/02
3.6K0
网页播放rtsp视频流
GitHub – vbence/stream-m: An HTML5-compatible live streaming server supporting the WebM and H.264 formats.
全栈程序员站长
2022/11/02
2.6K0
GStreamer播放RTSP视频流[通俗易懂]
本代码是使用GStreamer播放RTSP视频流,没有使用playbin,而是自己构建pipeline,经测试可以正常播放视频。
全栈程序员站长
2022/11/02
3.2K0
html播放rtsp流,浏览器播放rtsp视频流解决方案
最近项目中需要实时播放摄像头rtsp视频流,于是就专门做了些研究。而浏览器不能直接播放,只有通过插件或者转码来实现这个需求。
全栈程序员站长
2022/11/02
6.3K0
RTSP协议视频平台EasyNVR接入到EasyNVS管理平台后无法显示RTMP及RTSP视频流地址问题
EasyNVS视频综合管理平台能够对接入的EasyNVR进行统一的管理,获取EasyNVR的所有能力,并进行互联网化输出,同时进行统一化的管理和接口输出。
EasyNVR
2020/09/21
6600
使用Gstreamer处理RTSP视频流
这里使用Gstreamer + OpenCV来处理RTSP视频流,因此对Gstreamer进行调查。
全栈程序员站长
2022/11/02
9K0
使用Gstreamer处理RTSP视频流
如何在Unity3d平台下低延迟播放RTMP或RTSP流
随着VR类、游戏类场景的快速发展,开发者对Unity3d低延迟的直播需求量越来越大,前两年,大牛直播SDK发布了Windows平台、Android平台和iOS平台的Unity3d RTMP和RTSP的播放,好多公司用起来体验都非常好,以下介绍大概实现流程。
音视频牛哥
2020/03/02
3.6K0
如何在高版本谷歌Chrome中播放RTSP实时视频?
随着互联网基础设施的完善以及4G、5G等技术的大规模商用,在Chrome、Firefox、Edge等浏览器播放RTSP视频流也慢慢成为了信息化系统的行业标准。
猿大师
2021/10/10
3.8K0
flutter - 如何在 dart/flutter 中收听流值
如果流不是广播流,则您只能收听一次。 请参阅此 Medium post 以了解有关 Streams 的更多信息。 收听 stream 时,您需要在 _assetsAudioPlayer.currentPosition 函数中添加您的代码。
徐建国
2021/08/30
1.1K0
点击加载更多

相似问题

如何在网页中显示RTSP视频流?

3281

在Adobe中显示RTSP流

15

在html中显示RTSP流

227

在Kivy中显示RTSP流,python

126

在android应用中显示rtsp流

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文