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

在DialogFragment ()之前获取show子类中的父活动

在DialogFragment ()之前获取show子类中的父活动,可以通过以下步骤实现:

  1. 首先,需要在DialogFragment子类中创建一个接口,用于回调父活动的引用。可以命名为OnParentActivityListener。
代码语言:java
复制
public interface OnParentActivityListener {
    void onParentActivityReady(Activity activity);
}
  1. 在DialogFragment子类中,创建一个成员变量用于保存OnParentActivityListener接口的引用。
代码语言:java
复制
private OnParentActivityListener mListener;
  1. 在DialogFragment子类中,重写onAttach()方法,获取父活动的引用。
代码语言:java
复制
@Override
public void onAttach(@NonNull Context context) {
    super.onAttach(context);
    if (context instanceof OnParentActivityListener) {
        mListener = (OnParentActivityListener) context;
    } else {
        throw new RuntimeException(context.toString()
                + " must implement OnParentActivityListener");
    }
}
  1. 在DialogFragment子类中,重写onDetach()方法,释放父活动的引用。
代码语言:java
复制
@Override
public void onDetach() {
    super.onDetach();
    mListener = null;
}
  1. 在DialogFragment子类中的合适时机,调用OnParentActivityListener接口的方法,传递父活动的引用。
代码语言:java
复制
if (mListener != null) {
    mListener.onParentActivityReady(getActivity());
}
  1. 在父活动中实现OnParentActivityListener接口,并在onParentActivityReady()方法中获取父活动的引用。
代码语言:java
复制
public class MainActivity extends AppCompatActivity implements OnParentActivityListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 创建并显示DialogFragment
        MyDialogFragment dialogFragment = new MyDialogFragment();
        dialogFragment.show(getSupportFragmentManager(), "dialog");
    }

    @Override
    public void onParentActivityReady(Activity activity) {
        // 在这里获取父活动的引用
        // 可以进行相关操作,如调用父活动的方法或访问父活动的成员变量
    }
}

通过以上步骤,就可以在DialogFragment ()之前获取show子类中的父活动。请注意,以上代码示例是基于Android开发环境的,具体实现可能会根据开发框架和语言有所不同。

对于腾讯云相关产品和产品介绍链接地址,由于不能提及具体品牌商,建议在腾讯云官方网站上查找相关产品和文档,以获取最准确和最新的信息。

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

相关·内容

Android 撸起袖子,自己封装 DialogFragment

本文主要内容 DialogFragment 是什么 创建通用 CommonDialogFragment 实现各种类型 DialogFragment 写正文之前,先来一波效果展示吧 ?... DialogFragment 产生之前,我们创建对话框一般采用 Dialog,而且从代码编写角度来看,Dialog 使用起来其实更加简单,但是 Google 却是推荐尽量使用 DialogFragment...,是不是感觉很奇怪,其实原因也很简单, DialogFragment 有着 Dialog 所没有的非常好特性 DialogFragment 本身是 Fragment 子类,有着和 Fragment...Android 官方推荐 : DialogFragment 创建对话框 二、创建通用 CommonDialogFragment 这个类是 DialogFragment 子类,对 DialogFragment...DialogFragmentHelper 之前我们有两件事先要做一下 1、 styles 文件定义我们定义我们对话框风格样式 <style name="Base_AlertDialog" parent

1.3K41

Android后台杀死系列之一:FragmentActivity及PhoneWindow后台杀死处理机制

举个栗子 我们创建一个Activity,并且onCreate函数中新建并show一个DialogFragment,之后通过某种方式将APP异常杀死(RogueKiller模拟后台杀死工具),再次从最近任务唤起...为什么出现两个DialogFragment Fragment在被创建之后,如果不通过add或者replace添加到Activity布局是不会显示保存现场时候,也是保存了add这个状态,来看一下...现在回归正题,对于后台杀死状态下,为什么会show两个DialogFragment呢,我们需要接着看就要Fragment异常处理流程,Fragment没有无参构造方法会引发崩溃里面,分析只是走到了...onSaveInstanceState调用时机 onSaveInstanceState函数是Android针对可能被后台杀死Activity做一种预防,它执行时机2.3之前onPause之前...Activity都是可能被后台杀死,比如,开发者选项打开不保留活动,就会达到这种效果,启动另一个Activity时,上一个Activity保存流程大概如下,这里先简单描述,在下一篇原理篇时候

2.9K30

久闻大名FragmentAndroid应用界面开发

这里写图片描述 它拥有它自己有别于(也相似与)活动生命周期,基本上onActivityCreate方法以及之前,就跟活动onCreate差不多,而onDestroyView以及之后类似于活动onDestroy...这里写图片描述 ---- Fragment子类(很少用) 对话框:DialogFragment 列表:ListFragment 选项设置:PreferenceFragment WebView界面:WebViewFragment...这里写图片描述 动态添加碎片主要分为5步: 创建待添加碎片实例。 获取到FragmentManager,活动可以直接调用getFragmentManager()方法得到。...这里写图片描述 连同一个活动之间Fragment进行交互也非常简单: 他们之间数据传递 ①Activit传递数据给Fragment: Activity创建Bundle数据包,调用Fragment...这里写图片描述 新建时给活动容器R.id.replace添加一个Fragment,并将数据通过Fragment自定义静态方法传递过去 ?

71820

Android底部弹窗实现示例代码

本文主要是介绍Android实现底部弹窗正确姿势,如果你实现底部弹窗时遇到了一些问题,那么请仔细阅读本文,相信文章会对你有所帮助。...利用DialogFragment实现底部弹窗。 下面,就利用以上三种方式分别实现Android底部弹窗。...因为是继承Dialog,所以有Dialog特性,既触摸底部弹窗以外部分,弹窗会自动消失,这里就不在演示,可以文末获取源码,自己实验一下就知道了。...利用DialogFragment实现底部弹窗 实现弹窗之前,先了解一下DialogFragment DialogFragmentandroid 3.0时被引入。...也是Fragment,所以,DialogFragment有和Fragment一样生命周期,onStart方法初始化弹窗数据,onCreateView中加载布局,同样,和Fragment使用方法也是一样

4.2K31

DialogFragment踩坑记

普通Fragment还是DialogFragment 同时设置不要Title跟背景 隐藏Dialog 不保留活动 显示逻辑 推荐使用DialogFragment 要选android X下DialogFragment...= mContainerId == 0; 只有当mContainerId等于0时候,才会生成dialog,不然的话,跟普通Fragment没有任何区别,所以要用DialogFragment#show...checkStateLoss,就可以轻易规避这个问题了 特别强调是,这个报错自测阶段很不容易暴露出来,但是一上线上环境就容易发生,需要注意规避 不保留活动 这是一个不得不考虑场景,实际情况下,发生了不保留活动...大多数场景,显示dialog,一般都是用户操作时候,这个时候调用DialogFragment#show()方法展示是没有问题 先看下源码 public void show(@NonNull FragmentManager...监听到onResume时候,触发Dialog显示,代码就不贴了 推荐使用DialogFragment 建议展示Dialog地方,统一使用DialogFragment,更好处理生命周期各种场景

1.8K30

★ Android基础篇-你应该知道Android Interface

Interface 详解 简单说 java都是通过继承类,重写方法来实现一些功能,继承只能单继承,而接口Interface是可以实现多个,恰好补充了这个缺点。...效果入下 之前只是简单说了一下接口,只是知道它定义以后,设置并回调…OK我再举个栗子,加深一下印象 使用Interface进行传值 (设置一个DialogFragment页面) public class...}).setNegativeButton("Cancel", null); return builder.create(); } } 主页面调用这个接口 可以获取值...抽象类可以包含抽象方法,也可以有非抽象方法,但是有抽象方法类一定是抽象类。抽象方法不能有方法体。 引用接口时,接口引用指向实现对象,尽量定义为接口或引用。... 实现接口方法时必须加上public修饰符 【源码地址】 [希望这篇文章可以帮到你]

1.1K30

Navigation深入浅出,到出神入化,再到实战改造(二)

map进行注册 源码分析 理解上面类作用,我们从容器开始入手,看NavHostFragment,是如何获取xml配置属性: app:navGraph="@navigation/nav_graph"...attrs获取,但Fragment构造函数显然不会有此属性。...XML定义标签,绘制结束后,会执行onInflate()方法。...总结如下: NavHostController 这个类没啥实际作用,就是为了和NavHostFragment形式上同样,真正实现都在类NavController 想要自定义自己Navigator...就是Mapkey NavHostController 这个类没啥实际作用,就是为了和NavHostFragment形式上同样,真正实现都在类NavController 有需求要拦截返回键,做我们想做事情

1.9K40

Android如何自定义升级对话框示例详解

其实这也只是一个DialogFragment 而已,重点只是在于界面的设计 想要使用做出这样一个DialogFragment ,需要自定义一个View,然后将该View传入到该Dialog 先定义布局.../white</item <item name="android:textSize" 17sp</item </style 建立 DialogFragment 子类 /** * 作者: 叶应是叶...("2.0.1新版本发布啦", "更多功能等你体验"); dialogFragment.show(getSupportFragmentManager(), new View.OnClickListener...可以看到 Dialog 中有较大空白区,显得有点虚浮 这里可以选择 VersionDialogFragment onStart() 方法中指定 Dialog 所占屏幕宽度比例 @Override...此时 Dialog 四个角还都是直,这里再来将之修改为圆角 drawable文件夹下新建一个root.xml文件,作为Dialog使用到布局根Layout背景 <?

56421

DialogFragment自动弹出软键盘,消失时关闭软键盘

消失时关闭软键盘 dialog关闭分为几种情况,处理方式不一样: 1.用户手动调用DialogFragment.dismiss() 这时可以重写dismiss方法,调用之前关闭软键盘。...调用时发现 hideSoftInputFromWindow() mServedView不为null,但是 windowToken == null,看一下这个参数获取 imm?....再来看 mServedView不为null值,发现是我 DialogFragment 依附 activity布局控件,可以理解为当前获取焦点控件,因此可以传入activity当前焦点所在view...自定义Dialogdismiss之前通知 DialogFragment 关闭软键盘 转变思路,既然 DialogFragment 无法提前监听dialog关闭,那就自定义Dialog重写dismiss...方法,Dialog关闭之前告知 DialogFragment 关闭软键盘 class EditDialog(context: Context?

5K40

android推荐使用dialogFrament而不是alertDialog

DialogFragmentandroid 3.0时被引入。是一种特殊Fragment,用于Activity内容之上展示一个模态对话框。典型用于:展示警告框,输入框,确认框等等。...DialogFragment产生之前,我们创建对话框:一般采用AlertDialog和Dialog。注:官方不推荐直接使用Dialog创建对话框。...且DialogFragment也允许开发者把Dialog作为内嵌组件进行重用,类似Fragment(可以大屏幕和小屏幕显示出不同效果)。...6、DialogFragment做屏幕适配 我们希望,一个对话框在大屏幕上以对话框形式展示,而小屏幕上则直接嵌入当前Actvity。这种效果对话框,只能通过重写onCreateView实现。...,如果是大屏幕则直接以对话框显示,如果是小屏幕则嵌入我们Activity布局 这个R.bool.large_layout是我们定义资源文件: 默认values下新建一个bools.xml <

2.3K50

Android开发之DialogFragment用法实例总结

其他和 ① 类似。 应用场景区别 文章一开始简单总结了方法 ① 和方法 ② 应用场景,这里说明下: 1....从基本用法可以看到方法 ① 为简单替代 Dialog 提供了非常方便创建方式,比方法 ② 有优势 2....方法 ① 使用了多线程(例如网络请求)情况下,不能正确获取当前 Fragment 状态,会产生空指针异常。...PS:你也可以使用静态 Handler 结合弱引用等来处理异步操作,那样对 DialogFragment 状态获取就不重要了。...总结 以上是个人在实际开发过程一点总结和看法,希望你能抱着存疑态度进行尝试,如果有新观点或者文章中有不正确地方,欢迎和我联系。

1.5K20

妖怪般VerifyError | 奇形怪状bug

java.lang.VerifyError 是说 JVM 加载一个类时,会去校验类正确性,只有类文件不合法才会报这个Error,这个异常发生在类加载过程。 这个问题发生在类生命周期过程。...而之后简单分析了下异常,猜测dialogfragment类本身就出现了问题,所以导致了类加载时候,验证字节码安全性失败。但是这部分可是androidx内部代码啊,这不就是不讲武德吗?... (I)V 从描述上来看,就是构造函数内调用是当前类,并没有调用构造。所以导致了这部分是一个异常字节码。...因为这部分我司做了一部分字节码类替换,所以DialogFragment其实已经被修改了一部分了。...检验方法getCaughtExceptionType() 找不到catch代码块中指定异常类(如例子ErrnoException)时即会报错:”VFY: unable to resolve exception

84140

Android 必知必会 - DialogFragment 使用总结

扩展阅读:Dialog 屏幕翻转时处理 无标题栏/全屏 基本用法里代码注释有设置主题地方,下面详细说下两种方法下设置无标题栏和实现全屏方式: 无标题栏 对于方法 ① : @Override public...其他和 ① 类似。...应用场景区别 文章一开始简单总结了方法 ① 和方法 ② 应用场景,这里说明下: 从基本用法可以看到方法 ① 为简单替代 Dialog 提供了非常方便创建方式,比方法 ② 有优势 方法 ① 使用了多线程...(例如网络请求)情况下,不能正确获取当前 Fragment 状态,会产生空指针异常。...PS:你也可以使用静态 Handler 结合弱引用等来处理异步操作,那样对 DialogFragment 状态获取就不重要了。

3.9K31

Android 必知必会 - DialogFragment 实现类似 PopupWindow 效果

虽然功能上 PopupWindow 更符合需要,但是使用 DialogFragment 代码更简洁、更方便封装功能模块。...获取 View 位置时机 如果需要让 DialogFragment onCreate() 等生命周期函数内直接调用显示到某个 View 位置处,可能无法正确获取到该 View 坐标,具体参考...Android必知必会-获取View坐标和长宽时机 一文。...但是,如果在界面显示给用户后,DialogFragment 显示交给用户触发的话,就不需要在意这个问题了。...总结 总的来说,这里基本完成了要求效果,但是定位只能指定其顶部开始位置,不方便底部定位到某个 View 上面,因为高度自适应的话,页面渲染完成前是不能知道它高度

1.6K20

跟我学高德地图——标注我位置

这里使用SDK为AMap_Location_V2.5.0_20160526.jar 没有接触过高德地图同学,请参考 加载一张高德地图 1.获取位置 package com.pansoft.oilgas.gaodenavigation...不好了,缺少定位权限,是没有AndroidManifest文件声明定位权限吗?...不是,是Android6.0将用户权限分为普通权限和危险权限,这里定位权限属于危险权限,需要在使用时候进行动态申请。...定义一个DialogFragment展示数据,不熟悉DialogFragment同学请参考 AltertDialogDialogFragment使用 package com.pansoft.oilgas.gaodenavigation...4.地图上标注我位置 原来代码基础上,添加地图MapView 不熟悉同学,请参考 加载一张高德地图 onCreate添加,获取位置相关部分 // show my location

1.1K10
领券