**主要实现功能:**

1、从Activity的TextView中获取字符串设置到AlertDialog的TextView和EditText中

2、将AlertDialog的EditText中的值设置到Activity的TextView中

效果:

![](https://box.kancloud.cn/2016-03-01_56d5568e48191.jpg)

![](https://box.kancloud.cn/2016-03-01_56d5568e62672.jpg)

![](https://box.kancloud.cn/2016-03-01_56d5568e78363.jpg)

新手在自定义AlertDialog上的疑问笔者猜测主要有**两个**:

1、自定义的layout如何放到AlertDialog中?

解答:

获取到layout的view之后,直接调用AlertDialog.Builder的setView方法即可。

2、如何对自定义AlertDialog中的控件进行操作?

解答:

于fragment中的操作类似,首先要获取该layout的view,然后通过该view获取到其中控件进行操作。

MainActivity:

~~~

package com.example.myalertdialog;

import android.app.Activity;

import android.content.DialogInterface;

import android.support.v7.app.AlertDialog;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

import android.widget.EditText;

import android.widget.LinearLayout;

import android.widget.TextView;

import android.widget.Toast;

public class MainActivity extends Activity {

TextView old_name;

Button bt_change_name;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

old_name = (TextView) findViewById(R.id.tv_name);

bt_change_name = (Button) findViewById(R.id.bt_name);

bt_change_name.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

//获取自定义AlertDialog布局文件的view

LinearLayout change_name = (LinearLayout) getLayoutInflater()

.inflate(R.layout.my_dialog, null);

TextView tv_name_dialog = (TextView) change_name.findViewById(R.id.tv_name_dialog);

//由于EditText要在内部类中对其进行操作,所以要加上final

final EditText et_name_dialog = (EditText) change_name.findViewById(R.id.et_name_dialog);

//设置AlertDialog中TextView和EditText显示Activity中TextView的内容

tv_name_dialog.setText(old_name.getText().toString());

et_name_dialog.setText(old_name.getText().toString());

new AlertDialog.Builder(MainActivity.this)

.setTitle("修改用户名")

.setView(change_name)

.setPositiveButton("确定", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

//将Activity中的textview显示AlertDialog中EditText中的内容

//并且用Toast显示一下

old_name.setText(et_name_dialog.getText().toString());

Toast.makeText(MainActivity.this, "设置成功!", Toast.LENGTH_SHORT).show();

}

})

//由于“取消”的button我们没有设置点击效果,直接设为null就可以了

.setNegativeButton("取消", null)

.create()

.show();

}

});

}

}

~~~

activity_main.xml:

~~~

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical"

android:padding="10dp">

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:orientation="horizontal">

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textColor="#000"

android:text="原用户名:" />

android:id="@+id/tv_name"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="大西瓜" />

android:id="@+id/bt_name"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="修改用户名"

/>

~~~

my_dialog.xml:

~~~

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical"

android:padding="10dp">

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:orientation="horizontal">

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textColor="#000"

android:text="原用户名:" />

android:id="@+id/tv_name_dialog"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="Hello World!" />

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:orientation="horizontal">

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textColor="#000"

android:text="新用户名" />

android:id="@+id/et_name_dialog"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="Hello World!"

/>

~~~

源码地址:[http://download.csdn.net/detail/double2hao/9411213](http://download.csdn.net/detail/double2hao/9411213)

android activity传值到dialog,android 自定义AlertDialog 与Activity相互传递数据相关推荐

  1. activity关闭和dialog.dismiss冲突的解决(Activity has leaked window com.android.internal.p

    其意思大概就是:窗体已经关闭了但是dialog仍然在显示,Activity has leaked window(activity渗透出窗体),大概就是这个意思. 那么就要在activity finis ...

  2. Android弹出自定义Dialog,android自定义Dialog实现底部弹窗

    android自定义Dialog实现底部弹窗 拿到这个需求,很多人都是直接想用popWindow 实现,但是这样的效果我们完全可以根据系统的Dialog 自定义一个. AlertDialog.Buil ...

  3. android 键盘顶起dialog,Android dialog软键盘弹出顶起View

    此文章只为自己随手笔记,可不做参考. 前提: 需求:要求点击一个按钮,弹出一个弹出框,从底部弹出,里面包含输入框和其他按钮.一开始我一直用 RelativeLayout 做布局,因为需要从底部弹出,所 ...

  4. android 获取对话框对象,Android 基本Dialog和自定义Dialog

    Android 基本Dialog和自定义Dialog Dialog类是对话框的基类,但你应该避免直接实例化Dialog ,可以使用子类 1.AlertDialog 此对话框可以显示标题,最多三个按钮, ...

  5. android 自定义带输入框的dialog,Android 基本Dialog和自定义Dialog

    Android 基本Dialog和自定义Dialog Dialog类是对话框的基类,但你应该避免直接实例化Dialog ,可以使用子类 1.AlertDialog 此对话框可以显示标题,最多三个按钮, ...

  6. 【转】 Android常用实例—Alert Dialog的使用

    Android常用实例-Alert Dialog的使用 AlertDialog的使用很普遍,在应用中当你想要用户做出"是"或"否"或者其它各式各样的选择时,为了 ...

  7. Android常用实例—Alert Dialog的使用

    Android常用实例-Alert Dialog的使用 AlertDialog的使用很普遍,在应用中当你想要用户做出"是"或"否"或者其它各式各样的选择时,为了 ...

  8. Android底层隐私数据,Android Intent传递数据底层分析详细介绍_Android_脚本之家

    Android  Intent传递数据底层分析详细介绍 我们知道在Activity切换时,如果需要向下一个ActivityB传递数据,可以借助Intent对象的putExtra方法. 但是不知各位有没 ...

  9. android中intent放数据类型,Android Intent传递数据底层分析详细介绍

    Android  Intent传递数据底层分析详细介绍 我们知道在Activity切换时,如果需要向下一个ActivityB传递数据,可以借助Intent对象的putExtra方法. 但是不知各位有没 ...

最新文章

  1. Ubuntu 14.04 64bit上查看网页中的cookies
  2. python十分钟教程_简洁的十分钟Python入门教程
  3. python学习-syspath、系统内置模块
  4. 2017蓝桥c语言真题,[蓝桥杯][2017年第八届真题]发现环 (C语言代码)------------C语言——菜鸟级...
  5. java 初始化参数_我们如何在Java中的对象参数中初始化数组?
  6. anaconda安装python包_Anaconda:安装或更新 Python 第三方包
  7. ubuntu 搭建正版彩虹秒赞网
  8. 单点登陆_规避单点故障,MySQL 8.0 MGR软负载怎么选?
  9. html前端小技巧—div半透明设置技巧
  10. Windows 10出现0x8000ffff错误应该如何解决?
  11. python中os库是标准库还是第三方库_Python os 标准库使用
  12. 浅谈加密算法 aes
  13. 用python实现识别框选图片字体部分,并分割成单独图片
  14. pip:指定多个源/内部源
  15. IDEA运行web项目及乱码处理
  16. matlab_app实现一个简单的色彩分析可视化程序
  17. C# 使用DataMan 数据人扫码枪连接与触发
  18. python自学免费图片_自学Python----爬取Beautyleg图片
  19. SMBIOS信息概述 -- DMI
  20. 生态创客Android应用

热门文章

  1. 乔布斯18岁求职信拍卖价22.24万美元,值吗?
  2. Linux 在 M1 上跑起来了
  3. 程序员过关斩将——搞定秒杀,只需要这几步!!
  4. 没想到!谷歌排名第一的编程语言,这样的学的话,更容易成为高手!
  5. Electron 实战:前端人的最佳跨平台解决方案
  6. 如何告别“芯繁魂乱”难题?这个 OS 来支招!
  7. 未来的程序员都将在浏览器中编码!
  8. 华为发布近2万元折叠屏手机Mate Xs;iPhone 12或支持WiFi新标;Electron 6.1.8发布 | 极客头条...
  9. AI+大数据顶级技术盛会倒计时10天,6.6折票限时特惠!
  10. Firefox 差点就赢了第二次浏览器大战!