zoukankan      html  css  js  c++  java
  • Android--创建对话框AlertDialog

      学习Android过程中发现showDialog()、onCreateDialog()这些方法从Android4.0开始都过时了。

      官方推荐使用DialogFragment类来创建对话框。

      1)布局文件dialog_activity.xml

    <?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:orientation="vertical" >
        
            <Button 
                    android:id="@+id/btn_dialog"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/btn_dialog_text"
                    android:layout_gravity="center_horizontal"/>
    </LinearLayout>

      2)Activity代码

    package cn.luxh.dialognew;
    
    import android.app.Activity;
    import android.app.AlertDialog;
    import android.app.Dialog;
    import android.app.DialogFragment;
    import android.content.DialogInterface;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.Toast;
    
    public class DialogActivity extends Activity{
        
        private static final String TAG = "DialogActivity";
        
        
        private Button btn_Dialog;
        
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.dialog_activity);
            handleButtonClick();
        }
        
        
        /**
         * 处理按钮事件
         */
        private void handleButtonClick() {
            btn_Dialog = (Button) findViewById(R.id.btn_dialog);
            btn_Dialog.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                        AlertDialogFragment alertDialogFragment = AlertDialogFragment.newInstance();
                        //显示对话框
                        alertDialogFragment.show(getFragmentManager(), "MyDialog");
                    }
            });
        }
        
        /**
         * 确定按钮事件处理
         */
        private  void doPositiveClick() {
            Log.d(TAG, "确定按钮事件处理");
            Toast.makeText(this, "确定按钮被点击!", Toast.LENGTH_SHORT).show();
        }
        
        /**
         * 取消按钮事件处理
         */
        private  void doNegativeClick(){
            Log.d(TAG, "取消按钮事件处理");
            Toast.makeText(this, "取消按钮被点击!", Toast.LENGTH_SHORT).show();
        }
        
        /**
         * 生成对话框
         */
        public static class AlertDialogFragment extends DialogFragment{
            
            private static AlertDialogFragment alertDialogFragment = new AlertDialogFragment();
            
            public static AlertDialogFragment newInstance() {
                return alertDialogFragment;
            }
            @Override
            public Dialog onCreateDialog(Bundle savedInstanceState) {
                return new AlertDialog.Builder(getActivity())
                                                    .setIcon(R.drawable.ic_launcher)
                                                    .setTitle("我的对话窗口")
                                                    .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                                                        @Override
                                                        public void onClick(DialogInterface dialog, int which) {
                                                            ((DialogActivity)getActivity()).doPositiveClick();
                                                        }
                                                    })
                                                    .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                                                        @Override
                                                        public void onClick(DialogInterface dialog, int which) {
                                                            ((DialogActivity)getActivity()).doNegativeClick();
                                                        }
                                                    }).create();
            }
        }
    }

      3)运行效果

  • 相关阅读:
    OpenWrt(LEDE)2020.4.29更新 UPnP+NAS+多拨+网盘+DNS优化+帕斯沃 无缝集成+软件包
    OpenWrt(LEDE)2020.4.12编译 UnPnP+NAS+多拨+网盘+DNS优化+帕斯沃 无缝集成
    软路由OpenWrt(LEDE)2020.4.6编译 UnPnP+NAS+多拨+网盘+DNS优化
    软路由OpenWrt(LEDE)2020.4.4编译 UnPnP+NAS+多拨+网盘+DNS优化
    【x64软路由】OpenWrt(LEDE) 20200329编译 反追踪 抗污染 加速 PSW 无缝集成 UPnP NAS
    OpenWrt R2020.3.19 反追踪 抗污染 加速 PSW 无缝集成 UnPnP NAS
    Go语言进阶学习笔记
    go语言基础学习笔记
    深入剖析PHP7内核源码(二)- PHP变量容器
    深入剖析PHP7内核源码(一)- PHP架构与生命周期
  • 原文地址:https://www.cnblogs.com/luxh/p/3469765.html
Copyright © 2011-2022 走看看