android activity传值到dialog,android 自定义AlertDialog 与Activity相互传递数据
**主要实现功能:**
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相互传递数据相关推荐
- activity关闭和dialog.dismiss冲突的解决(Activity has leaked window com.android.internal.p
其意思大概就是:窗体已经关闭了但是dialog仍然在显示,Activity has leaked window(activity渗透出窗体),大概就是这个意思. 那么就要在activity finis ...
- Android弹出自定义Dialog,android自定义Dialog实现底部弹窗
android自定义Dialog实现底部弹窗 拿到这个需求,很多人都是直接想用popWindow 实现,但是这样的效果我们完全可以根据系统的Dialog 自定义一个. AlertDialog.Buil ...
- android 键盘顶起dialog,Android dialog软键盘弹出顶起View
此文章只为自己随手笔记,可不做参考. 前提: 需求:要求点击一个按钮,弹出一个弹出框,从底部弹出,里面包含输入框和其他按钮.一开始我一直用 RelativeLayout 做布局,因为需要从底部弹出,所 ...
- android 获取对话框对象,Android 基本Dialog和自定义Dialog
Android 基本Dialog和自定义Dialog Dialog类是对话框的基类,但你应该避免直接实例化Dialog ,可以使用子类 1.AlertDialog 此对话框可以显示标题,最多三个按钮, ...
- android 自定义带输入框的dialog,Android 基本Dialog和自定义Dialog
Android 基本Dialog和自定义Dialog Dialog类是对话框的基类,但你应该避免直接实例化Dialog ,可以使用子类 1.AlertDialog 此对话框可以显示标题,最多三个按钮, ...
- 【转】 Android常用实例—Alert Dialog的使用
Android常用实例-Alert Dialog的使用 AlertDialog的使用很普遍,在应用中当你想要用户做出"是"或"否"或者其它各式各样的选择时,为了 ...
- Android常用实例—Alert Dialog的使用
Android常用实例-Alert Dialog的使用 AlertDialog的使用很普遍,在应用中当你想要用户做出"是"或"否"或者其它各式各样的选择时,为了 ...
- Android底层隐私数据,Android Intent传递数据底层分析详细介绍_Android_脚本之家
Android Intent传递数据底层分析详细介绍 我们知道在Activity切换时,如果需要向下一个ActivityB传递数据,可以借助Intent对象的putExtra方法. 但是不知各位有没 ...
- android中intent放数据类型,Android Intent传递数据底层分析详细介绍
Android Intent传递数据底层分析详细介绍 我们知道在Activity切换时,如果需要向下一个ActivityB传递数据,可以借助Intent对象的putExtra方法. 但是不知各位有没 ...
最新文章
- Ubuntu 14.04 64bit上查看网页中的cookies
- python十分钟教程_简洁的十分钟Python入门教程
- python学习-syspath、系统内置模块
- 2017蓝桥c语言真题,[蓝桥杯][2017年第八届真题]发现环 (C语言代码)------------C语言——菜鸟级...
- java 初始化参数_我们如何在Java中的对象参数中初始化数组?
- anaconda安装python包_Anaconda:安装或更新 Python 第三方包
- ubuntu 搭建正版彩虹秒赞网
- 单点登陆_规避单点故障,MySQL 8.0 MGR软负载怎么选?
- html前端小技巧—div半透明设置技巧
- Windows 10出现0x8000ffff错误应该如何解决?
- python中os库是标准库还是第三方库_Python os 标准库使用
- 浅谈加密算法 aes
- 用python实现识别框选图片字体部分,并分割成单独图片
- pip:指定多个源/内部源
- IDEA运行web项目及乱码处理
- matlab_app实现一个简单的色彩分析可视化程序
- C# 使用DataMan 数据人扫码枪连接与触发
- python自学免费图片_自学Python----爬取Beautyleg图片
- SMBIOS信息概述 -- DMI
- 生态创客Android应用
热门文章
- 乔布斯18岁求职信拍卖价22.24万美元,值吗?
- Linux 在 M1 上跑起来了
- 程序员过关斩将——搞定秒杀,只需要这几步!!
- 没想到!谷歌排名第一的编程语言,这样的学的话,更容易成为高手!
- Electron 实战:前端人的最佳跨平台解决方案
- 如何告别“芯繁魂乱”难题?这个 OS 来支招!
- 未来的程序员都将在浏览器中编码!
- 华为发布近2万元折叠屏手机Mate Xs;iPhone 12或支持WiFi新标;Electron 6.1.8发布 | 极客头条...
- AI+大数据顶级技术盛会倒计时10天,6.6折票限时特惠!
- Firefox 差点就赢了第二次浏览器大战!