自定义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();
}
}
}
自定义Dialog以及Dialog返回值到Activity的更多相关文章
- linux shell自定义函数(定义、返回值、变量作用域)介绍
http://www.jb51.net/article/33899.htm linux shell自定义函数(定义.返回值.变量作用域)介绍 linux shell 可以用户定义函数,然后在shell ...
- android 16 带返回值的activity
main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" andro ...
- 05 SpringMVC:02.参数绑定及自定义类型转换&&04.SpringMVC返回值类型及响应数据类型&&05.文件上传&&06.异常处理及拦截器
springMVC共三天 第一天: 01.SpringMVC概述及入门案例 02.参数绑定及自定义类型转换 03.SpringMVC常用注解 第二天: 04.SpringMVC返回值类型及响应数据类型 ...
- linux shell 自定义函数(定义、返回值、变量作用域)介绍
linux shell 可以用户定义函数,然后在shell脚本中可以随便调用.下面说说它的定义方法,以及调用需要注意那些事项. 一.定义shell函数(define function) 语法: [ f ...
- 转 linux shell自定义函数(定义、返回值、变量作用域)介绍
linux shell 可以用户定义函数,然后在shell脚本中可以随便调用.下面说说它的定义方法,以及调用需要注意那些事项. 一.定义shell函数(define function) 语法: [ f ...
- linux shell学习笔记二---自定义函数(定义、返回值、变量作用域)介绍
linux shell 可以用户定义函数,然后在shell脚本中可以随便调用.下面说说它的定义方法,以及调用需要注意那些事项. 一.定义shell函数(define function) 语法: [ f ...
- activity之间參数传递&&获取activity返回值&&activity生命周期
Activity之间參数传递 A activity想将參数传给B activity时能够利用Intent将消息带过去 Intent intent = new Intent(this,BActivity ...
- Android - 和其他APP交互 - 获得activity的返回值
启用另一个activity不一定是单向的.也可以启用另一个activity并且获得返回值.要获得返回值的话,调用startActivityForResult()(而不是startActivity()) ...
- Intent获取Activity返回值
/* Intent获取Activity返回值* 三步:* 子Activity关闭后的返回值处理函数,requestCode是子Activity返回的请求码,与页面顶端的两个请求码相匹配,resultC ...
随机推荐
- Lua面向对象设计
首先对于Lua语言,它没有打算被用来进行大型的程序设计,相反,Lua目标定于小型到中型的程序设计,通常是作为大型系统的一部分,所以它只提供了一套精简的元素,很多高级语言的概念都没有.这样Lua就成为了 ...
- java中DatagramSocket连续发送多个数据报包时产生丢包现象解决方案
try { //向指定的ip和端口发送数据~! //先说明一下数据是谁发送过来的! byte[] ip = InetAddress.getLocalHost().getHostAddress().ge ...
- ruby -- 基础学习(六)时间计算
计算下一天的这个时刻, # 比如"2013-8-16 18:45:12" 的下一天的这个时刻 “2013-8-17 18:45:12” Time.now + 1.day 如果想得到 ...
- python面试题大全(一)
注:本面试题来源于网络,转载请注明来自http://www.cnblogs.com/goodhacker/p/3366618.html. 1. (1)python下多线程的限制以及多进程中传递参数的方 ...
- Android 学习笔记之SurfaceView的使用+如何实现视频播放...
学习内容: 1.掌握Surface的使用... 2.Android中如何实现视频播放... 1.SurfaceView类的使用 在Android中,一般播放音频时我们可以去使用Android提供的 ...
- C# 只启动一个实例完全解决方案
工作上经常会遇到"程序只能启动一个实例"这样的需求. 我想,这样的需求应该很普遍,所以没打算去动脑筋,去找谷歌问下就得了,用下来发现,不是这里不爽就是那里不行. 先说下我详细的几点 ...
- iOS性能优化之内存管理:Analyze、Leaks、Allocations的使用和案例代码
最近接了个小任务,和公司的iOS小伙伴们分享下instruments的具体使用,于是有了这篇博客...性能优化是一个很大的话题,这里讨论的主要是内存泄露部分. 一. 一些相关概念 很多人应该比较了解这 ...
- 2013/11/22工作随笔-缓存是放在Model层还是放在Controller层
web网站的典型代码框架就是MVC架构,Model层负责数据获取,Controller层负责逻辑控制,View层则负责展示. 一般数据获取是去mysql中获取数据 但是这里有个问题,我们不会每次请求都 ...
- .Net魔法堂:发个带附件的邮件
一.前言 由于工作需要最近把邮件发送封装成WebService,现在把代码记录在此,以便日后查阅. 二.二话不说写代码 private void _SendMail(string form, st ...
- springMVC源码分析之拦截器
一个东西用久了,自然就会从仅使用的层面上升到探究其原理的层面,在javaweb中springmvc更是如此,越是优秀的框架,其底层实现代码更是复杂,而在我看来,一个优秀程序猿就相当于一名武林高手,不断 ...