注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

BCB-DG's Blog

...

 
 
 

日志

 
 

Android dialog事件监听  

2014-05-25 18:18:49|  分类: Android |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

//yudajun

如何对对话框的事件进行处理,一下是两种方法:

对话框的事件监听有两种方式:

1,监听dialog事件;

这个简单如要监听用户点击back键事件,只需要实现DialogInterface.OnKeyListener接口即可

private void show(){
		AlertDialog.Builder	builder= new AlertDialog.Builder(MainActivity.this);
		builder.setTitle("余额不足");
		       builder.setMessage("赶快充值");
		       builder.setPositiveButton("ok", new DisDialog(1));
		       builder.setNegativeButton("cancel", new DisDialog(2));
		       builder.setOnCancelListener(new DisDialog(0));
		       builder.setOnKeyListener(new DisDialog(0));
		       builder.create().show();
	}
	
	class DisDialog implements DialogInterface.OnKeyListener,DialogInterface.OnCancelListener,DialogInterface.OnClickListener{

		int num;
		public DisDialog(int num){
			this.num=num;
		}
		
		@Override
		public void onCancel(DialogInterface dialog) {
			Log.e("keymsg", "dialog cancel");
			MainActivity.this.finish();
		}

		@Override
		public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
			boolean click=false;
			if(keyCode==KeyEvent.KEYCODE_BACK){
				click=true;
				Log.e("keymsg", "back key");
			}
			return click;
		}

		@Override
		public void onClick(DialogInterface dialog, int which) {
			if(num==1)
				Log.e("keymsg", "ok press");
			else if(num==2)
				Log.e("keymsg", "cancel press");
		}
    }
如果需要控制对话框的显示,消失以及自定义样式,那就需要使用自定义的对话框了。

2,自定义对话框;

实质就是对activity的样式设置,下面是一个实例

package com.pioneersoft.welcome.ui;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.pioneersoft.bluetooth.tools.SetMsg;
import com.pioneersoft.remote.control.R;

public class PassWordActivity extends Activity implements View.OnClickListener {

	private Button yesBtn, cancelBtn;	//dialog button
	private EditText passwordEdit;	//dialog input password
	private String strpass;		//password from server
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.password_view);
		passwordEdit=(EditText)findViewById(R.id.etPassWord);
		yesBtn=(Button)findViewById(R.id.yesBtn);
		cancelBtn=(Button)findViewById(R.id.cancelBtn);
		yesBtn.setOnClickListener(this);
		cancelBtn.setOnClickListener(this);
		Intent in=getIntent();
		if(in!=null)
			strpass=in.getStringExtra("password");
	}
	
	@Override
	public void onClick(View v) {
		if(v==yesBtn){
			String pass=passwordEdit.getEditableText().toString();
			if(strpass==null||strpass==""){
				Toast.makeText(this,R.string.password__null, 200).show();
			}
			else if(pass.equals(strpass)){
				this.finish();
			}
			else{
				Toast.makeText(this,R.string.password_wrong, 200).show();
			}
		}
		else if(v==cancelBtn){
			String pass=passwordEdit.getEditableText().toString();
			if(pass!=null){
				passwordEdit.setText("");
			}
		}
	}
	
	@Override
	public void onBackPressed() {
		if(SetMsg.CONNECT_BYBLUETOOTH.equals(SetMsg.connectByWay)){			
		}
		else if(SetMsg.CONNECT_BYWIFI.equals(SetMsg.connectByWay)){			
		}
 //super.onBackPressed(); } }
布局文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >

    <LinearLayout
        android:id="@+id/passwordLayout"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/pasword"
            android:textSize="20dip" />

        <EditText
            android:id="@+id/etPassWord"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:hint="@string/input_password"
            android:password="true"
            android:phoneNumber="true" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/passwordLayout"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/yesBtn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/sure" />

        <Button
            android:id="@+id/cancelBtn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/reset" />
    </LinearLayout>

</RelativeLayout>
最后别忘了在manifest设置样式
<activity android:name="com.pioneersoft.welcome.ui.PassWordActivity" android:theme="@android:style/Theme.Dialog"/>
  评论这张
 
阅读(556)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017