今天我们来讨论一下如何在Activity与DialogFragment交互的方法,这里包括了DialogFragment的启动以及Activity方法的调用。

DialogFragment与Dialog相比类似,是官方现在更建议使用的Dialog。

DialogFragment的定义

新建一个DialogFragment,该类继承DialogFragment。复写onCreateView()方法,在该方法中设置Dialog的布局。这个Dialog的布局可以完全自定义,可以包括任何常见的河自定义的控件。

下面是一个实例:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE);
View layoutView = inflater.inflate(R.layout.fragment_dialog_login_tip, container, false);

如上代码块所示,fragment_dialog_login_tip.xml里面我只定义了一个TextView显示一些信息。如果读者想要添加按钮或其他控件,可在这个复写的方法中通过layoutView.findViewById()来初始化并设置监听器。

DialogFragment的启动

要启动一个DialogFragment,要在Activity中new出该类的实例,然后通过.show()方法启动。

下面是一个实例:

FragmentManager fragmentManager = getSupportFragmentManager();
loginTipDialogFragment = new LoginTipDialogFragment();
loginTipDialogFragment.setCancelable(false);
loginTipDialogFragment.show(fragmentManager, "login_tip_dialog");

如上所示,这个DialogFragment就可以显示出来了。

从DialogFragment调用Activity中的方法

要从DialogFragment调用Activity中的方法,首先满足下列两点要求:

 1. 该Activity是启动该DialogFragment的;
2. 要被调用的方法是public的。

比如,在上面那个启动DialogFragment的Activity中有一个exit()方法,用来退出应用程序,Activity的名字叫做TestActivity。DialogFragment中要实现退出程序可以按照如下方法发起调用:

((TestActivity)getActivity()).exit();

从Activity 调用DialogFragment中的方法

这种方式的调用就简单多了。由于有对象实例,直接.方法名就可以了。

Activity与DialogFragment交互的方法的更多相关文章

  1. EventBus实现activity跟fragment交互数据

    最近老是听到技术群里面有人提出需求,activity跟fragment交互数据,或者从一个activity跳转到另外一个activity的fragment,所以我给大家介绍一个开源项目,EventBu ...

  2. Android Activity的onSaveInstanceState() 和 onRestoreInstanceState()方法:

    Android Activity的onSaveInstanceState() 和 onRestoreInstanceState()方法: 1. 基本作用: Activity的 onSaveInstan ...

  3. 5种JavaScript和CSS交互的方法

      分享   分享   分享   分享   分享   随着浏览器不断的升级改进,CSS和JavaScript之间的界限越来越模糊.本来它们是负责着完全不同的功能,但最终,它们都属于网页前端技术,它们需 ...

  4. 5种你未必知道的JavaScript和CSS交互的方法

    随着浏览器不断的升级改进,CSS和JavaScript之间的界限越来越模糊.本来它们是负责着完全不同的功能,但最终,它们都属于网页前端技术,它们需要相互密切的合作.我们的网页中都有.js文件和.css ...

  5. 请阐述调用Activity有哪几种方法,并写出相关的Java代码

    请阐述调用Activity有哪几种方法,并写出相关的Java代码. 答案:可以采用两种方式调用Activity:显示调用和隐式调用.显示调用直接指定了Activity,代码如下: Intent int ...

  6. Android中退出多个Activity的两个经典方法

    这里介绍两种方法:一种把每个activity记住,然后逐一干掉:另一种思路是使用广播. 方法一.用list保存activity实例,然后逐一干掉 上代码: import java.util.Linke ...

  7. android 没有main函数,怎么找到程序执行入口呢?以及activity主要生命周期的方法说明

    android应用程序,由一到多个Activity组成.每个Activity没有很紧密的联系,因为我们可以在自己的程序中调用其它Activity,特别是调用自己的代码之外生成的Activity,比如a ...

  8. 【Android优化篇】提升Activity加载速度的方法

    文章转自:http://www.jianshu.com/p/2007ca0290d3 作者: CoderFan 前言 这个也是我面试遇到的问题,当时只回答了一种情况,异步加载数据,没想到别的方式,回来 ...

  9. FineReport单行与数据库交互的方法

    1.   问题描述 我们在做一张报表填报的时候经常会遇到需要在一行进行添加动作,将该行数据直接与数据库交互,执行存储过程过程.我们可以通过每一行增加帆软“插入”按钮实现插入动作,并且在控件事件中增加和 ...

随机推荐

  1. MNIST手写识别

    Demo侠可能是我等小白进阶的必经之路了,如今在AI领域,我也是个研究Demo的小白.用了两三天装好环境,跑通Demo,自学Python语法,进而研究这个Demo.当然过程中查了很多资料,充分发挥了小 ...

  2. vue2.0 axios封装、vuex介绍

    一.前言 博主也是vue道路上的行者,道行不深,希望自己的东西能对大家有所帮助.这篇博客针对 了解过vue基础,但是没有做过vue项目的童鞋.如果想看基础指令,可以看我之前的一篇博客,请点击  跳转, ...

  3. C#8.0可空引用类型的使用注意要点

    最近VS2019正式版发布了,装下来顺便试用了一下C#8.0,最大的看点应该就是可空引用类型了.不过C#8.0仍然处于Beta的状态,而且试用时也遇到了几个坑. 背景知识说明: 所谓的可空引用类型是指 ...

  4. Error Code: 1044. Access denied for user 'root'@'%' to database

    mysql> SELECT host,user,password,Grant_priv,Super_priv FROM mysql.user; +--------------+--------- ...

  5. 安卓开发常用icon/png图样

    平时开发当中会用到很多png图样,但是自己又不太会做,因此做好的办法就是直接在网上下载下来用了,这里给大家推荐一个比较好用的网站,免费的,有很多好的png可以直接下载下来使用. http://www. ...

  6. 华为手机无法使用USB调试的解决方案

    在Android开发中,一直在使用华为的荣耀8进行调试,但是突然某一次,发现USB调试无法使用了,且在其他的电脑上进行调试也不行. 后来经过查资料,总算解决了此问题,在这里进行一下解决方案的记录. 需 ...

  7. typeconfig.json配置说明

    如果一个目录下存在一个tsconfig.json文件,那么它意味着这个目录是TypeScript项目的根目录. 不带任何输入文件的情况下调用tsc,编译器会从当前目录开始去查找tsconfig.jso ...

  8. javascript深入理解--作用域,作用域链,闭包的面试题解

    一.概要 作用域和作用域链是js中非常重要的特性,关系到理解整个js体系,闭包是对作用域的延伸,其他语言也有闭包的特性. 那什么是作用域?作用域指的是一个变量和函数的作用范围. 1.js中函数内声明的 ...

  9. SqlServer 将纯数字的时间转换为DateTime

    由于数据库存的是整个字符串组到一起了,C#代码是这个样子的. public static string time(DateTime dt) { ) ? ) ? ) ? ) ? ) ? " + ...

  10. C#串口通讯概念以及简单实现

    最近在研究串口通讯,其中有几个比较重要的概念,RS-232这种适配于上位机和PC端进行连接,RS-232只限于PC串口和设备间点对点的通信.它很简单的就可以进行连接,由于串口通讯是异步的,也就是说你可 ...