【例2-4】消息对话框示例
设计了两种形式的对话框,一种是普通对话框,另一种是用户登录对话框。

教学视频
布局文件activity_dialog.xml的源代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<Button
android:id="@+id/buttonl"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="打开普通对话框"
android:textSize="24sp" />
<Button
android:id="@+id/button2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="打开输入对话框"
android:textSize="24sp" />
</LinearLayout>
布局文件login.xml的源代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="300dp"
android:layout_height="fill_parent"
android:orientation="vertical">
<TextView
android:id="@+id/user"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="用户名:"
android:textSize="18sp" />
<EditText
android:id="@+id/editText"
android:layout_width="200dp"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="密码:"
android:textSize="18sp" />
<EditText
android:id="@+id/paswdEdit"
android:layout_width="200dp"
android:layout_height="wrap_content" />
</LinearLayout>
控制文件DialogActivity.java源代码
package com.example.chap02;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.Toast;
public class DialogActivity extends Activity
implements View.OnClickListener
{
Button btn1,btn2;
LinearLayout login;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_dialog);
btn1=(Button)findViewById(R.id.buttonl);
btn2=(Button)findViewById(R.id.button2);
btn1.setOnClickListener(this);
btn2.setOnClickListener(this);
}
@Override
public void onClick(View arg0)
{
AlertDialog.Builder dialog=
new AlertDialog.Builder(DialogActivity.this);
if(arg0 == btn1)
{
dialog.setTitle("对话框");
dialog.setIcon(R.drawable.icon);
dialog.setMessage("消息对话框应用示例");
dialog.setPositiveButton("确定", new okClick());
dialog.create();
dialog.show();
}
else if(arg0 == btn2)
{
login = (LinearLayout)getLayoutInflater().inflate(R.layout.login, null);
dialog.setTitle("用户登录").setMessage("请输入用户名和密码")
.setView(login);
dialog.setPositiveButton("确定", new loginClick());
dialog.setNegativeButton("退出", new exitClick());
dialog.setIcon(R.drawable.icon);
dialog.create();
dialog.show();
}
}
/* 普通对话框的“确定”按钮事件 */
class okClick implements DialogInterface.OnClickListener
{
@Override
public void onClick(DialogInterface dialog, int which)
{
dialog.cancel();
}
}
/* 输入对话框的“确定”按钮事件 */
class loginClick implements DialogInterface.OnClickListener
{
EditText txt;
@Override
public void onClick(DialogInterface dialog, int which)
{
txt = (EditText)login.findViewById(R.id.paswdEdit);
//取出输入编辑框的值与密码“admin”比较
if((txt.getText().toString()).equals("admin"))
Toast.makeText(getApplicationContext(),
"登录成功", Toast.LENGTH_SHORT).show();
else
Toast.makeText(getApplicationContext(),
"密码错误", Toast.LENGTH_SHORT).show();
dialog.dismiss();
}
}
/* 输入对话框的“退出”按钮事件 */
class exitClick implements DialogInterface.OnClickListener
{
@Override
public void onClick(DialogInterface dialog, int which)
{
DialogActivity.this.finish();
}
}
}
打开项目配置文件AndroidManifest.xml,配置要启动的Activity类名
<activity android:name=".DialogActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

