主要实现功能:

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

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


效果:

android 自定义AlertDialog 与Activity相互传递数据_第1张图片  android 自定义AlertDialog 与Activity相互传递数据_第2张图片  android 自定义AlertDialog 与Activity相互传递数据_第3张图片


新手在自定义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:

<?xml version="1.0" encoding="utf-8"?>           


my_dialog.xml:

<?xml version="1.0" encoding="utf-8"?>                                


源码地址: http://download.csdn.net/detail/double2hao/9411213





更多相关文章

  1. android中如何判断edittext中数据为空?
  2. Android之怎么使用SQLite数据库(增、删、改、查、分页等)以及Lis
  3. Android--创建和使用数据库详细指南
  4. Android adapter 数据适配器
  5. 初学Android,数据存储之使用SQLite数据库(四十六)
  6. Android 采用HttpClient提交数据到服务器
  7. Android 数据存储五种方式使用与总结
  8. Android 之 数据存储方式

随机推荐

  1. 【Android软件】ES文件浏览器:Android资
  2. Android大厂面试题锦集(BAT TMD JD 小米)
  3. Android滤镜效果实现及原理分析
  4. android 4.2的新特性layoutRtl,让布局自动
  5. Ice Cream Sandwich 為 Android 相機和相
  6. android用ClipDrawable自定义各种进度条(
  7. android Intent常用介绍
  8. Android判断设备网络连接状态,并判断连接
  9. 華碩董座施崇棠漫談筆電、平板、Netbook
  10. Roboto 字體以及 Android(安卓)4.0 Ice C