Android开发之基于DialogFragment创建对话框的方法示例

作者:迟做总比不做强 时间:2023-10-03 21:17:12 

本文实例讲述了Android基于DialogFragment创建对话框的方法。分享给大家供大家参考,具体如下:


/**
* 使用DialogFragment创建对话框
* @description:
* @author ldm
* @date 2016-5-12 下午2:00:01
*/
public class FragmentAlertDialog extends Activity {
 private Button button;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.fragment_dialog);
   // 初始化Button及设置监听
   button = (Button) findViewById(R.id.show);
   button.setOnClickListener(new OnClickListener() {
     public void onClick(View v) {
       // 弹出对话框
       showDialog();
     }
   });
 }
 void showDialog() {
   // DialogFragment 创建对话框
   DialogFragment newFragment = MyAlertDialogFragment
       .newInstance(R.string.alert_dialog_two_buttons_title);
   newFragment.show(getFragmentManager(), "dialog");
 }
 public void doPositiveClick() {
   Log.i("FragmentAlertDialog", "Positive click!");
 }
 public void doNegativeClick() {
   Log.i("FragmentAlertDialog", "Negative click!");
 }
 /**
  * 自定义弹出对话框DialogFragmet
  *
  * @description:
  * @author ldm
  * @date 2016-5-12 下午1:54:31
  */
 public static class MyAlertDialogFragment extends DialogFragment {
   public static MyAlertDialogFragment newInstance(int title) {
     MyAlertDialogFragment frag = new MyAlertDialogFragment();
     Bundle args = new Bundle();
     args.putInt("title", title);
     frag.setArguments(args);
     return frag;
   }
   /**
    * DialogFragment需要实现onCreateView或者onCreateDIalog方法。
    * onCreateView():使用定义的xml布局文件展示Dialog。
    * onCreateDialog():利用AlertDialog或者Dialog创建出Dialog。
    */
   @Override
   public Dialog onCreateDialog(Bundle savedInstanceState) {
     int title = getArguments().getInt("title");
     return new AlertDialog.Builder(getActivity())//创建一个Dialog
    .setIcon(R.drawable.alert_dialog_icon)//设置图标
    .setTitle(title)//设置标题
    .setPositiveButton(R.string.alert_dialog_ok,
      new DialogInterface.OnClickListener() {//确认(OK)按钮
       public void onClick(DialogInterface dialog,
         int whichButton) {
        ((FragmentAlertDialog) getActivity())
          .doPositiveClick();
       }
      })
    .setNegativeButton(R.string.alert_dialog_cancel,//取消(Cancel)按钮
      new DialogInterface.OnClickListener() {
       public void onClick(DialogInterface dialog,
         int whichButton) {
        ((FragmentAlertDialog) getActivity())
          .doNegativeClick();
       }
      }).create();
   }
 }
}

布局文件


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:gravity="center_horizontal"
 android:orientation="vertical"
 android:padding="4dip" >
 <TextView
   android:id="@+id/text"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_gravity="center_vertical|center_horizontal"
   android:layout_weight="1"
   android:gravity="top|center_horizontal"
   android:text="Example of displaying an alert dialog with a DialogFragment"
   android:textAppearance="?android:attr/textAppearanceMedium" />
 <Button
   android:id="@+id/show"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_weight="0"
   android:text="@string/show" >
 </Button>
</LinearLayout>

开源代码:https://github.com/ldm520/ANDROID_API_DEMOS

希望本文所述对大家Android程序设计有所帮助。

来源:http://blog.csdn.net/true100/article/details/51383639

标签:Android,DialogFragment,对话框
0
投稿

猜你喜欢

  • Java实现评论回复功能的完整步骤

    2023-08-23 20:42:45
  • 阿里云OSS域名配置及简单上传的示例代码

    2022-04-08 19:14:32
  • C++实现约瑟夫环的循环单链表

    2022-11-12 19:34:29
  • 带你了解Spring中bean的获取

    2021-10-10 09:53:10
  • android监听返回按钮事件的方法

    2021-12-22 04:57:57
  • 解决mybatis-plus3.1.1版本使用lambda表达式查询报错的方法

    2022-03-19 03:55:09
  • 基于Luhn算法的银行卡校验规则

    2022-06-05 00:56:15
  • JDK源码分析之String、StringBuilder和StringBuffer

    2022-01-23 00:10:20
  • Java这个名字的来历与优势

    2023-03-27 18:28:40
  • Android中分析Jetpack Compose动画内部的实现原理

    2021-06-13 05:23:02
  • Activiti如何启动流程并使流程前进

    2023-11-18 18:38:51
  • 聊聊SpringMVC项目依赖和静态资源导出问题

    2023-03-26 13:32:20
  • interrupt()和线程终止方式_动力节点Java学院整理

    2021-09-27 08:50:53
  • C#缩略图多路径多格式保存的实例

    2021-10-29 18:12:36
  • Java logback日志的简单使用

    2023-07-15 01:32:33
  • Android常用的图片加载库

    2021-06-04 18:56:30
  • Java自定义线程池的实现示例

    2022-01-23 01:28:04
  • flutter实现扫码枪获取数据源禁止系统键盘弹窗示例详解

    2023-07-23 01:52:41
  • C#中out参数、ref参数与值参数的用法及区别

    2022-10-16 17:15:39
  • VB.NET中TextBox的智能感知应用实例

    2021-07-09 09:36:31
  • asp之家 软件编程 m.aspxhome.com