android 自定义AlertDialog 与Activity相互传递数据
16lz
2021-01-23
主要实现功能:
1、从Activity的TextView中获取字符串设置到AlertDialog的TextView和EditText中
2、将AlertDialog的EditText中的值设置到Activity的TextView中
效果:
新手在自定义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"?>
<?xml version="1.0" encoding="utf-8"?>
源码地址: http://download.csdn.net/detail/double2hao/9411213
更多相关文章
- android中如何判断edittext中数据为空?
- Android之怎么使用SQLite数据库(增、删、改、查、分页等)以及Lis
- Android--创建和使用数据库详细指南
- Android adapter 数据适配器
- 初学Android,数据存储之使用SQLite数据库(四十六)
- Android 采用HttpClient提交数据到服务器
- Android 数据存储五种方式使用与总结
- Android 之 数据存储方式