首页
学习
活动
专区
工具
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自定义静态方法传递过去 ?

    72820

    Android底部弹窗实现示例代码

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

    4.3K31

    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,更好处理生命周期各种场景

    2K30

    ★ 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 有需求要拦截返回键,做我们想做事情

    2K40

    Android经典面试题之Kotlin如何隐藏DialogFragment和Dialog导航栏

    DialogFragment隐藏导航栏 Android ,使用 DialogFragment 显示对话框时,如果您希望隐藏系统导航栏(如状态栏和导航键),可以通过设置相关系统 UI 标志来实现。...这需要在 DialogFragment 视图创建和显示过程配置窗口属性。...-- Your layout content goes here --> 使用 DialogFragment 要显示这个 DialogFragment,可以活动或其他片段调用以下代码...") 小结 通过 DialogFragment onViewCreated 方法设置系统 UI 可见性标志,可以实现隐藏系统导航栏效果。...Dialog隐藏导航栏 Android ,如果想在 Dialog 隐藏系统导航栏(包括状态栏和底部导航键),可以通过设置窗口属性来实现。

    11410

    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背景 <?

    59321

    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?

    5.1K40

    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

    妖怪般VerifyError | 奇形怪状bug

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

    94740

    Android开发之DialogFragment用法实例总结

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

    1.5K20

    Android 必知必会 - DialogFragment 使用总结

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

    4.1K31

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

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

    1.7K20
    领券