android fragment dialogfragment,Android中使用DialogFragment编写对话框的实例教程

Android提供alert、prompt、pick-list,单选、多选,progress、time-picker和date-picker对话框,并提供自定义的dialog。在Android 3.0后,dialog基于fragment,并对之前版本提供兼容支持库,也就是说对于开发者而言,dialog是基于DialogFragment的,但此时需要在应用中加入相关的兼容库。

和Windows或者网页JS的Dialog不同,Android的dialog是异步的,而不是同步的。对于同步的dialog,显示dialog后,下一行代码会等到dialog结束,即下一行代码可以知道dialog的输入以及用户点击的button。而对于异步的dialog,dialog显示后,下一行代码继续执行,而不是等dialog消失,通过callback来处理dialog的事件。异步的dialog也意味着应用的代码也可以关闭dialog。

使用DialogFragment来管理对话框,当旋转屏幕和按下后退键时可以更好的管理其声明周期,它和Fragment有着基本一致的声明周期。且DialogFragment也允许开发者把Dialog作为内嵌的组件进行重用,类似Fragment(可以在大屏幕和小屏幕显示出不同的效果)。上面会通过例子展示这些好处~

使用DialogFragment至少需要实现onCreateView或者onCreateDIalog方法。onCreateView即使用定义的xml布局文件展示Dialog。onCreateDialog即利用AlertDialog或者Dialog创建出Dialog。

下面我们就来看一个使用DialogFragment编写对话框的例子:

1.重写onCreateView创建Dialoga)布局文件,我们创建一个设置名称的布局文件:

android:layout_width="wrap_content"

android:layout_height="wrap_content" >

android:id="@+id/id_label_your_name"

android:layout_width="wrap_content"

android:layout_height="32dp"

android:gravity="center_vertical"

android:text="Your name:" />

android:id="@+id/id_txt_your_name"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_toRightOf="@id/id_label_your_name"

android:imeOptions="actionDone"

android:inputType="text" />

android:id="@+id/id_sure_edit_name"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentRight="true"

android:layout_below="@id/id_txt_your_name"

android:text="ok" />

b)继承DialogFragment,重写onCreateView方法

package com.example.zhy_dialogfragment;

import android.app.DialogFragment;

import android.os.Bundle;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

public class EditNameDialogFragment extends DialogFragment

{

@Override

public View onCreateView(LayoutInflater inflater, ViewGroup container,

Bundle savedInstanceState)

{

View view = inflater.inflate(R.layout.fragment_edit_name, container);

return view;

}

}

c)测试运行:

Main方法中调用:

public void showEditDialog(View view)

{

EditNameDialogFragment editNameDialog = new EditNameDialogFragment();

editNameDialog.show(getFragmentManager(), "EditNameDialog");

}

效果图:

f50fb95e4b28e2efe59fb6844e218c16.png

可以看到,对话框成功创建并显示出来,不过默认对话框有个讨厌的标题,我们怎么去掉呢:可以在onCreateView中调用getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE);即可去掉。即:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值