java android对话框_android 对话框Dialog和AlertDialog应用 | 学步园

这篇博客详细介绍了如何在Android中使用Dialog和AlertDialog。从最基础的简单应用开始,展示如何在点击按钮时显示对话框,接着讨论如何将布局文件设置到对话框中,包括创建带有用户输入字段的登录对话框,并处理登录验证。此外,还涉及了使用ProgressDialog显示加载进度。通过示例代码,读者可以了解如何创建和定制各种对话框。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1:第一种简单应用对话框。

先新建android  project

修改AndroidManifest.xml文件activity的属性代码:

android:name=".MainActivity"

android:label="@string/title_activity_main"

android:theme="@android:style/Theme.Dialog"

>

结果运行图如下

1347969264_4593.png

2:单击按钮时显示出一个对话框

布局Layout下的activity_mian.xml代码

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent" >

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerHorizontal="true"

android:layout_centerVertical="true"

android:text="@string/look"

tools:context=".MainActivity" />

string.xml代码

tds

欢迎来到对话框!

查看AlertDialog对话框!

Settings

MainActivity

这里是AlertDialog对话框!

编写人:某某

确定

取消

MainActivity.java代码

import android.os.Bundle;

import android.app.Activity;

import android.app.AlertDialog;

import android.content.DialogInterface;

import android.content.DialogInterface.OnClickListener;

import android.view.Menu;

import android.view.View;

import android.widget.Button;

import android.widget.Toast;

public class MainActivity extends Activity {

//定义组件

private Button button;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//查找button组件button = (Button) this.findViewById(R.id.button);

//点击按钮触发显示Dialog事件

button.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {AlertDialog.Builder builder = new AlertDialog.Builder(

MainActivity.this);

//对话框的标题

builder.setTitle(R.string.s);

//显示的信息内容

builder.setMessage(R.string.message);

//设置android内中的图标库为对话框图标

builder.setIcon(android.R.drawable.ic_menu_help);

builder.setPositiveButton(R.string.ok, new OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

//点击确定时弹出文本域提示信息

Toast.makeText(MainActivity.this, "欢迎查看对话框",

Toast.LENGTH_LONG).show();

}

});

builder.setNegativeButton(R.string.cancal,

new OnClickListener() {

@Override

public void onClick(DialogInterface dialog,

int which) {

//点击取消时退出程序

finish();

}

});

builder.show();

}});

}

运行效果:

1347975505_3832.png

1347975513_2642.png

1347975517_8567.png

3:将布局文件设置到对话框里面

(1)实现xml文件变为dialog里面的内容

(2)ProgressDialog进程对话框的简单应用

activity_main.xml文件

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent" >

android:id="@+id/login"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerHorizontal="true"

android:layout_marginTop="100dp"

android:text="@string/login" />

新建xml登录布局文件用于弹出对话框用户输入用户名和密码login.xml

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical" >

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/inputname" />

android:id="@+id/user"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:inputType="text" >

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/inputpass" />

android:id="@+id/password"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:ems="10"

android:inputType="textPassword" >

string.xml代码;

DialogTest

进入登录页面

Settings

主界面

请输入你的用户名:

请输入你的密码:

Hello world!

登录成功页

Main_Activity.java代码

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//查找登录按钮组件login = (Button) this.findViewById(R.id.login);

//注册监听,点击按钮打开登录对话框

login.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

//显示登录窗口showDialog(LOGIN);

}

});

}

创建对话框:

@Override

protected Dialog onCreateDialog(int id) {

//LayoutInflater将xml的布局文件变成一个View实例

LayoutInflater inflater=LayoutInflater.from(this);

//布局为logindialog实例

View logindialog=inflater.inflate(R.layout.login, null);

//NEW出alertdialog

AlertDialog.Builder builder=new AlertDialog.Builder(this);

builder.setIcon(android.R.drawable.ic_menu_help).setTitle("请输入").setView(logindialog);

//查找已布局到对话框内View--logindialog的用户名和密码组件

name=(EditText) logindialog.findViewById(R.id.user);

pass=(EditText) logindialog.findViewById(R.id.password);

builder.setPositiveButton("登录", new DialogInterface.OnClickListener() {

//点击登录时事件处理

@Override

public void onClick(DialogInterface dialog, int which) {

System.out.println(name.getText());

System.out.println(pass.getText());

//转化为String类型,否则出现空指针异常

if(name.getText().toString().equals("admin")&&pass.getText().toString().equals("123")){

//创建进程对话框

ProgressDialog pro=ProgressDialog.show(MainActivity.this, "请等待","正在为你登录……", true);

try {

//进程休眠三秒钟

Thread.sleep(3000);

} catch (InterruptedException e) {

e.printStackTrace();

}

Intent intent=new Intent();

intent.setClass(MainActivity.this,SuccessActivity.class);

//将登录的用户名传到另一个activity——SuccessActivity

intent.putExtra("username", name.getText().toString());

//必须转化为String类型,否则出现空指针

startActivity(intent);

}

else

Toast.makeText(MainActivity.this, "登录失败!!!\n用户名或密码不正确", Toast.LENGTH_LONG).show();

}

});

builder.setNegativeButton("取消", new DialogInterface.OnClickListener(){

//取消登录时退出登录

@Override

public void onClick(DialogInterface dialog, int which) {

removeDialog(LOGIN);//关闭对话框

}

});

return builder.create();

}

activity_success.xml布局文件代码:

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent" >

android:id="@+id/showuser"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerHorizontal="true"

android:padding="@dimen/padding_medium"

tools:context=".SuccessActivity" />

Success_Activity.java代码

public class SuccessActivity extends Activity {

private TextView showinfo;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_success);

showinfo=(TextView) this.findViewById(R.id.showuser);

//获取定义的意图,得到传的参数值

Intent i=this.getIntent();

showinfo.setText("登录成功!!!\n欢迎"+i.getStringExtra("username")+"登录!");

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.activity_success, menu);

return true;

}

}

运行效果:

1349419072_8481.png

1349419081_1125.png

用户名及密码不正确或是有空值时登录失败,不跳转其他页面

1349419088_5294.png

输入正确时显示进程对话框,并进行登录跳转成功页面

1349419095_8652.png

1349419106_2410.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值