zoukankan      html  css  js  c++  java
  • 自定义Dialog以及Dialog返回值到Activity

    步骤:

    1.定义自定义的Dialog的布局文件

    2.写一个类MyDialog继承Dialog

    3.Dialog 返回值到Activity的方法是定义一个接口,接口中定义返回值到Activity的方法,MyDialog实现这个接口,然后在需要的位置调用接口中的方法,Activity实现这个接口,

    重写接口的方法

    代码如下

    return_code_dialog.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:padding="10dp"
        android:background="@color/white"
        android:weightSum="1">
    
        <TextView
            android:id="@+id/title"
            android:layout_width="321dp"
            android:layout_height="wrap_content"
            android:textColor="@color/black"
            android:textSize="24dp"/>
        <View
            android:layout_width="match_parent"
            android:layout_height="1px"
            android:background="@color/black"
            />
        <TextView
            android:id="@+id/content"
            android:layout_marginTop="10dp"
            android:layout_width="305dp"
            android:layout_gravity="center"
            android:textColor="@color/viewfinder_mask"
            android:layout_height="wrap_content"
            android:textSize="18dp"/>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_marginTop="10dp"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
       <EditText
           android:layout_width="0dp"
           android:layout_weight="1"
           android:gravity="center"
           android:textSize="20dp"
           android:password="true"
           android:layout_height="50dp"
           android:background="@drawable/bg_edit_normal"
           android:id="@+id/psw_1"
           android:digits="1234567890"/>
        <EditText
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="50dp"
            android:background="@drawable/bg_edit_normal"
            android:id="@+id/psw_2"
            android:password="true"
            android:gravity="center"
            android:textSize="20dp"
            android:digits="1234567890"
            />
        <EditText
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="50dp"
            android:background="@drawable/bg_edit_normal"
            android:id="@+id/psw_3"
            android:password="true"
            android:gravity="center"
            android:textSize="20dp"
            android:digits="1234567890"
            />
        <EditText
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="50dp"
            android:background="@drawable/bg_edit_normal"
            android:id="@+id/psw_4"
            android:password="true"
            android:gravity="center"
            android:textSize="20dp"
            android:digits="1234567890"
            />
        <EditText
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="50dp"
            android:background="@drawable/bg_edit_normal"
            android:id="@+id/psw_5"
            android:password="true"
            android:gravity="center"
            android:textSize="20dp"
            android:digits="1234567890"
            />
        <EditText
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="50dp"
            android:background="@drawable/bg_edit_normal"
            android:id="@+id/psw_6"
            android:password="true"
            android:gravity="center"
            android:textSize="20dp"
            android:digits="1234567890"
            />
        </LinearLayout>
    </LinearLayout>
    interface MyJudgePasswordInterface
    public interface MyJudgePasswordInterface {
        public void returnJudgePasswordResult(boolean result);
    }
    
    

    PasswordDialog.java

    package com.example.administrator.bigelephantbike;
    
    import android.app.AlertDialog;
    import android.app.Dialog;
    import android.content.Context;
    import android.content.Intent;
    import android.os.Bundle;
    import android.text.Editable;
    import android.text.TextWatcher;
    import android.util.Log;
    import android.view.KeyEvent;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.inputmethod.EditorInfo;
    import android.widget.EditText;
    import android.widget.TextView;
    
    import org.w3c.dom.Text;
    
    /**
     * Created by Administrator on 2016/4/3.
     */
    public class PasswordDialog extends Dialog implements TextWatcher,View.OnKeyListener{
    
        private Context context;
        private String title;
        private String content;
        private TextView titleTextView;
        private TextView contentTextVIew;
        private EditText eidtText1;
        private EditText eidtText2;
        private EditText eidtText3;
        private EditText eidtText4;
        private EditText eidtText5;
        private EditText eidtText6;
        private String password;
        private int current=0;
        private String[]passwordInput =new String[6];
        private int maxLen =1;//限制EditText的输入长度
        private MyJudgePasswordInterface myJudgePasswordInterface;
    
        public PasswordDialog(Context context) {
            super(context);
        }
        public PasswordDialog(Context context, int themeResId) {
            super(context, themeResId);
        }
        public PasswordDialog(Context context,String title,String content,String password,MyJudgePasswordInterface myJudgePasswordInterface){
            super(context,R.style.add_dialog);
            this.context =context;
            this.title=title;
            this.content =content;
            this.password =password;
            this.myJudgePasswordInterface =myJudgePasswordInterface;
        }
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            init();
        }
        void init(){
            LayoutInflater inflater = LayoutInflater.from(context);
            View view = inflater.inflate(R.layout.return_code_dialog, null);
            setContentView(view);
    
            titleTextView =(TextView)findViewById(R.id.title);
            contentTextVIew=(TextView)findViewById(R.id.content);
            eidtText1 =(EditText)findViewById(R.id.psw_1);
            eidtText2 =(EditText)findViewById(R.id.psw_2);
            eidtText3 =(EditText)findViewById(R.id.psw_3);
            eidtText4 =(EditText)findViewById(R.id.psw_4);
            eidtText5 =(EditText)findViewById(R.id.psw_5);
            eidtText6 =(EditText)findViewById(R.id.psw_6);
    
            titleTextView.setText(title);
            contentTextVIew.setText(content);
    
            //锁定数字键盘
            eidtText1.setInputType(EditorInfo.TYPE_CLASS_NUMBER);
            eidtText2.setInputType(EditorInfo.TYPE_CLASS_NUMBER);
            eidtText3.setInputType(EditorInfo.TYPE_CLASS_NUMBER);
            eidtText4.setInputType(EditorInfo.TYPE_CLASS_NUMBER);
            eidtText5.setInputType(EditorInfo.TYPE_CLASS_NUMBER);
            eidtText6.setInputType(EditorInfo.TYPE_CLASS_NUMBER);
    
            //添加内容改变的事件监听
            eidtText1.addTextChangedListener(this);
            eidtText2.addTextChangedListener(this);
            eidtText3.addTextChangedListener(this);
            eidtText4.addTextChangedListener(this);
            eidtText5.addTextChangedListener(this);
            eidtText6.addTextChangedListener(this);
    
    
            eidtText1.setOnKeyListener(this);
            eidtText2.setOnKeyListener(this);
            eidtText3.setOnKeyListener(this);
            eidtText4.setOnKeyListener(this);
            eidtText4.setOnKeyListener(this);
            eidtText5.setOnKeyListener(this);
            eidtText6.setOnKeyListener(this);
    
        }
    
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    
        }
    
        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            int length = 0;
            //Log.d("test","current="+current+"我变了");
            switch (current) {
                case 0:
                    length = eidtText1.getText().length();
                    changeFocus(length, eidtText2);
                    passwordInput[0] = eidtText1.getText().toString();
                    break;
                case 1:
                    length = eidtText2.getText().length();
                    changeFocus(length, eidtText3);
                    passwordInput[1] = eidtText2.getText().toString();
                    break;
                case 2:
                    length = eidtText3.getText().length();
                    changeFocus(length, eidtText4);
                    passwordInput[2] = eidtText3.getText().toString();
                    break;
                case 3:
                    length = eidtText4.getText().length();
                    changeFocus(length, eidtText5);
                    passwordInput[3] = eidtText4.getText().toString();
                    break;
                case 4:
                    length = eidtText5.getText().length();
                    changeFocus(length, eidtText6);
                    passwordInput[4] = eidtText5.getText().toString();
                    break;
                case 5:
                    length = eidtText6.getText().length();
                    if (length >= 1) {
                        passwordInput[5] = eidtText6.getText().toString();
                        myJudgePasswordInterface.returnJudgePasswordResult(validatePassword());
                        this.cancel();
                    }
            }
        }
        @Override
        public void afterTextChanged(Editable s) {
    
        }
        void changeFocus(int l,EditText editText){
            if(l >= maxLen){
                current++;
                editText.setFocusable(true);
                editText.setFocusableInTouchMode(true);
                editText.requestFocus();
                editText.findFocus();
            }
        }
        boolean validatePassword(){
            current=0;
            StringBuffer stringBuffer=new StringBuffer();
            for(int i=0;i<passwordInput.length;i++){
                stringBuffer.append(passwordInput[i]);
            }
            String psw =stringBuffer.toString();
            return psw.equals(password);
        }
        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            if (keyCode == KeyEvent.KEYCODE_DEL
                    && event.getAction() == KeyEvent.ACTION_DOWN) {
                current--;
                switch(current){
                    case 0:eidtText1.setText("");requestF(eidtText1);break;
                    case 1:eidtText2.setText("");requestF(eidtText2);break;
                    case 2:eidtText3.setText("");requestF(eidtText3);break;
                    case 3:eidtText4.setText("");requestF(eidtText4);break;
                    case 4:eidtText5.setText("");requestF(eidtText5);break;
                    case 5:eidtText6.setText("");requestF(eidtText6);break;
                }
            }
            return false;
        }
        void requestF(EditText editText){
            editText.setFocusable(true);
            editText.setFocusableInTouchMode(true);
            editText.requestFocus();
            editText.findFocus();
        }
    }

    ChargeActivity.java

    package com.example.administrator.bigelephantbike;
    
    import android.app.Activity;
    import android.app.AlertDialog;
    import android.app.Dialog;
    import android.content.Intent;
    import android.os.Bundle;
    import android.text.TextWatcher;
    import android.util.Log;
    import android.view.View;
    import android.widget.Button;
    import android.widget.LinearLayout;
    import android.widget.TextView;
    import android.widget.Toast;
    import wheelview.ArrayWheelAdapter;
    import wheelview.OnWheelChangedListener;
    import wheelview.WheelView;
    
    public class ChargeActivity extends Activity implements OnWheelChangedListener,View.OnClickListener{
       private Button recoverBtn;
        private String passwordReturn="123456";
        private String passwordRecover="234567";
    
        private PasswordDialog myDialog;
        //密码输入是否正确
        private boolean pswResult;
        //实现MyJudgePasswordInterface
        private MyJudgePasswordInterface myJudgePasswordInterface;
        //1标识输入的是还车密码,2表示输入的是恢复密码
        private int flag=0;
    
        private String []nums={"0","1","2","3","4","5","6","7","8","9"};
    
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_charge);
    
            returnBtn =(Button)findViewById(R.id.return_btn);
            recoverBtn =(Button)findViewById(R.id.recover_btn);
    
            myJudgePasswordInterface=new MyJudgePasswordInterface() {
                @Override
                public void returnJudgePasswordResult(boolean result) {
                    pswResult = result;
    }
    }; returnBtn.setOnClickListener(this); recoverBtn.setOnClickListener(this); } @Override public void onClick(View v) { //当点击还车按钮时 if(v.getId()==R.id.return_btn){ flag=1; myDialog =new PasswordDialog(ChargeActivity.this,this.getResources().getString(R.string.input_return_code),this.getResources().getString(R.string.return_tips),passwordReturn,myJudgePasswordInterface); myDialog.show(); } if(v.getId()==R.id.recover_btn){ flag=2; myDialog=new PasswordDialog(ChargeActivity.this,this.getResources().getString(R.string.input_recover_tips),this.getResources().getString(R.string.recover_tips),passwordRecover,myJudgePasswordInterface); myDialog.show(); } } }


  • 相关阅读:
    第二章 存储,2.1 永不停止的脚步——数据库优化之路(作者:佳毅)
    第一章 基础设施,1.3 阿里视频云ApsaraVideo是怎样让4000万人同时狂欢的(作者:蔡华)
    第一章 基础设施,1.2 双11背后基础设施软硬结合实践创新(作者:希有)
    第一章 基础设施,1.1 万亿交易量级下的秒级监控(作者:郁松、章邯、程超、癫行)
    阿里巴巴2016双11背后的技术(不一样的技术创新)
    java实现Haffman编码
    CentOS7安装Nginx并部署
    ubuntu usb权限问题解决
    Camera图像处理原理及实例分析-重要图像概念
    sensor的skipping and binning 模式
  • 原文地址:https://www.cnblogs.com/rainhome/p/5351200.html
Copyright © 2011-2022 走看看