Android中Dialog数据的获取报错空指针问题
今天自定义Dialog,目的是需要在Dialog中输入EditText然后获取数据传递到需要的地方,最初的方法:
OnCreat()方法中初始化view控件,然后使用.getText()来获取,这是平常我们所用的方法,也很简单就不多说了
然而是一直报错:java.lang.NullPointerException: Attempt to invoke virtual method空指针问题
很郁闷的查了好久,最后发现了解决方式。
解决思路:这个我们一般上初始化View控件都是在某个Activity的java文件的OnCreat()方法中findViewById()来做的,但是细细想来,你想要获取Dialog中的控件而不是这个Activity的所以找不到出现null错误,去你所加载的那个layout中查找,然后初始化,就可以了。
主要实现代码:
//主Activity,点击imagebutton弹出对话框
public class ControlActivity extends AppCompatActivity {private ImageButton imageButton;
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_control);
imageButton = (ImageButton) findViewById(R.id.ibtnAddNumber
imageButton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {MyDialog.Builder builder = new MyDialog.Builder(ControlActivity.this);/*****从这开始找***///加载是Dialog的布局,从这个布局里边找他的控件才能找到LayoutInflater inflater = getLayoutInflater();View layout = inflater.inflate(R.layout.my_dialog, (ViewGroup) findViewById(dialog));//*初始化控件,和平时我们找的一样,注意layout.别忘了final EditText c_id = (EditText) layout.findViewById(R.id.c_id);/***这两个主要点 接下来想做什么,在下边的点击事件中做就好了,这里显示Toast试试吧*/builder.setTitle("添加设置项");builder.setContentView(layout);builder.setPositiveButton("确定添加",new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {//Toast显示获取的数据 c_id.getText()就是Toast.makeText(ControlActivity.this,c_id.getText(),Toast.LENGTH_SHORT).show();dialog.dismiss();addAdapter.notifyDataSetChanged();}});builder.setNegativeButton("取消",new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {dialog.dismiss();}});builder.creat().show();}});}}
布局文件什么的就不贴了,很简单一看就明白了。
效果图:
Dialog对话框,例子对应第一个EditText
看这样就获取成功啦
总结:Dialog对话框的ui异于当前Activity中,所以不能在当前Activity中找,要在他的加载布局中也就是Dialog对话框中找,然后就和平常要做什么的步骤一样了。当然如果定义了其他的自定义控件,也有类似问题,解决思路是一样的。
Android中Dialog数据的获取报错空指针问题相关推荐
- android listview 数据同步,android中ListView数据刷新时的同步方法
本文实例讲述了android中ListView数据刷新时的同步方法.分享给大家供大家参考.具体实现方法如下: public class Main extends BaseActivity { priv ...
- android中导入数据
随时随地技术实战干货,获取项目源码.学习资料,请关注源代码社区公众号(ydmsq666).QQ技术交流群(183198395). 接着android 中导出数据 一文,下面介绍在android中导入数 ...
- android项目模块导入eclipse编译报错,android中studio导入eclipse项目报错怎么办
android中studio导入eclipse项目报错怎么办 发布时间:2020-07-15 17:34:45 来源:亿速云 阅读:96 作者:清晨 这篇文章将为大家详细讲解有关android中stu ...
- Android中XML数据解析
转载请注明出处:http://blog.csdn.net/yegongheng/article/details/38296207 XML初步 今天我们来学习另一种非常重要的数据交换格式-XML.XML ...
- android libbfaac.so,Android中Json数据读取与创建
一: Json的特性和在数据交互中的地位就不用说了,直接看案例. 首先在android studio中创建assets文件目录,用于存放Json数据文件,android studio 1.3 默认项 ...
- Android 中的数据储存方案, 持久化技术
为什么80%的码农都做不了架构师?>>> Android 中储存数据的方法主要有三种: 1,文件储存. 2,SharedPreference储存. 3,数据库储存. 1. 文件 ...
- Android中的数据存储
Android中的数据存储 1.SharedPreference存储(共享参数) 1.1.使用SharedPreferences存储和读取数据的步骤 存储数据 保存数据一般分为四个步骤: 使用Acti ...
- Android中Fragment数据保存和恢复
原文地址:请扫文后stormzhang大神的微信公众号--AndroidDeveloper 写在前面 上周我们总结了Activity中数据的保存和恢复,我们花两分钟来回顾一下: Android中突发情 ...
- android 读取内部存储文件格式,Android中的数据储存之文件存储
当我们在使用各种程序时,其实际上是在和各种数据打交道,当我们聊QQ,刷微博,看新闻,其实都是在和里面的数据交互 例如在聊天时发出的消息,以及在登录时输入的账号密码,其实都是瞬时数据,那什么是瞬时数据呢 ...
最新文章
- Linux环境下虚拟环境virtualenv安装和使用(转)
- python程序的基本框架_Python PyQt学习随笔:PyQt主程序的基本框架
- python 爬虫 标签文本beautifullsoup_【Python爬虫】学习BeautifulSoup
- 为什么美团全面推动 K8S 落地,咬紧牙关也要搞云原生?
- 原生js 基于canvas写一个简单的前端 截图工具
- 【报告分享】2022中国职业教育行业报告-多鲸资本.pdf(附下载链接)
- mysql插入datetime默认值0000-00-00时报错
- Java-面向对象编程-三大特性之多态
- 打印机 树莓派安装cpus_raspberry树莓派安装CUPS实现打印服务器共享HP P1007打印机...
- 网络知识:光猫光纤宽带故障排查笔记!
- OCR表格识别—(一)
- php 一键wifi,懒人全自动脚本,一键自动swap2c一键3d加速,一键wifi加速等等.doc
- 文件拖到ads快捷方式打不开
- mt4怎么修改服务器代码,如何修改指标参数?
- ICCV,CVPR,ECCV
- 微信公众号主体如何变更迁移?
- Hadoop文件存储格式
- 【光电工程实训】光通信与光纤通信 电子元器件认知 万用表测量参数 元件特性 激光传声实验 自由空间光通讯 光纤光通信 全反射
- 响应式的优点与缺点?
- 数控等离子切割机,等离子切割机