今天在Android中碰到了这样一个问题,其实应该很少人会碰到,因为只有像我这种奇葩才会犯这种错误。

但既然解决了,我就想在这里跟大家分享一下,毕竟它困扰了我一个白天啊。。。不多说了,看下面。。。

其实问题很简单,就是Caused By : java.lang.NullPointerException.

上面就是我在用EditText 的时候它给我提示的错误类型。

为了简便,截取了部分代码如下,这就是问题的根源所在。

super.onCreate(savedInstanceState);
final EditText et = (EditText)findViewById(R.id.editTextId);
String str = et.getText().toString().trim();
setContentView(R.layout.main);

咋一看,没什么不对啊。就是因为我是新手,所以没看出端倪来。然后拼命的报错,拼命的上网查。

而网上却没有这个情况。。。

ADT Log 里面显示的出错位置就是String str = et.getText().toString().trim();这一行。

可它真的没什么不对啊,如果此时你呵呵了。那么你已经看出来了。

对,就是setContentView(R.layout.main);这句话位置放错了,它应该放在引用的资源文件的前面,在这里也就是

final EditText et = (EditText)findViewById(R.id.editTextId);这句话的前面。因为R.id.editTextId这个Id

引用到了R.layout.main这个Xml文件里面的对EditText的定义<EditText android:id="@+id/editTextId"

而在final EditText et = (EditText)findViewById(R.id.editTextId)句话之前我们并没有把R.layout.main这个Xml

文件放到我们的Context中来。我们可以观察一下findViewById()方法,会发现原来此方法中的R.id.editTextId是从当前

Activity的主布局文件xml中获取。而R.layout.main一定要先于findViewById(R.id.editTextId)在程序中声明。

那么这样改就对了:

super.onCreate(savedInstanceState);

setContentView(R.layout.main);
final EditText et = (EditText)findViewById(R.id.editTextId);
String str = et.getText().toString().trim();

这是本人犯的低价错误,对于大神没有什么参考价值,但我确确实实被它耍了一回,所以有必要在这里分享一下。

EditText 空指针问题的更多相关文章

  1. Android中findViewById()获取EditText 空指针问题

    因为EditText editText = (EditText)layout.findViewById(R.id.input_content);是从Dialog对话框布局layout中寻找ID为inp ...

  2. EditText 基本用法

    title: EditText 基本用法 tags: EditText,编辑框,输入框 --- EditText介绍: EditText 在开发中也是经常用到的控件,也是一个比较必要的组件,可以说它是 ...

  3. C++11特性——变量部分(using类型别名、constexpr常量表达式、auto类型推断、nullptr空指针等)

    #include <iostream> using namespace std; int main() { using cullptr = const unsigned long long ...

  4. Android带加减的edittext

    看了网上这样自带加减的edittext写得好复杂,还有各种监听事件,我觉得没有必有.于是我自己写了一个. 我这个edittext仅仅限制整数,每次加减1. public class TestEditT ...

  5. android EditText 默认情况下不获取焦点(不弹出输入框)

    可以在EditText前面放置一个看不到的LinearLayout,让它率先获取焦点: <LinearLayout android:focusable="true" andr ...

  6. 使用EditText的addTextChangedListener(new TextWatcher())方法

    (转:http://www.apkbus.com/android-5257-1-14.html) 在使用EditText的addTextChangedListener(new TextWatcher( ...

  7. 布局TextView和EditText区别,layout_width和lay_weight区别--Android Studio

    1. TextView控件是文本表示控件,主要功能是向用户展示文本的内容,它是不可编辑的,如设置标题:EditText控件是编辑文本控件,主要功能是让用户输入文本的内容,它是可以编辑的.每一个控件都有 ...

  8. appium实现截图和清空EditText

    前些日子,配置好了appium测试环境,至于环境怎么搭建,参考:http://www.cnblogs.com/tobecrazy/p/4562199.html   知乎Android客户端登陆:htt ...

  9. EditText获取和失去焦点,软键盘的关闭,和软键盘的显示和隐藏的监听

    软键盘显示和隐藏的监听: 注: mReplayRelativeLayout是EditText的父布局 //监听软键盘是否显示或隐藏 mReplayRelativeLayout.getViewTreeO ...

随机推荐

  1. sqlite在c++中的使用方法

    1.需要下载的文件      http://pan.baidu.com/s/1c06NpzM 2.执行文件shell的编译 3.在c++中如何使用 #include <stdio.h> # ...

  2. 从汇编看c++内联函数评估求值

    在c++中,一个inline函数实体,在整个class 声明未被完全看到之前,是不会被评估求值的,也就是说,对于类里面内联的成员函数本身的分析,要等到class的声明完全结束之后才开始.下面试c++源 ...

  3. AngularJS:何时应该使用Directive、Controller、Service?【新手必看】

    (这篇文章你们一定要看,尤其初学的人,好吗亲?) 大漠穷秋 译 AngularJS是一款非常强大的前端MVC框架.同时,它也引入了相当多的概念,这些概念我们可能不是太熟悉.(译者注:老外真谦虚,我大天 ...

  4. mac/linux install hg

    MAC OSX 10.9: sudo port -v install mercurial or easy_install mercurial

  5. CENTOS 挂载硬盘

    查看物理卷:pvs 查看卷组:vgs 列出分区:lvs 查看磁盘:ll /dev/disk/by-path/ 扫描 LVM 找到 VG vgscan centos 下 mount: unknown f ...

  6. Win7 64位 php+Apache+mysql 配置

    注明:此文转载至 http://www.cnblogs.com/isyouth/p/3778045.html 一 :准备阶段 1:php php下载链接:http://windows.php.net/ ...

  7. Wordpress 常用代码解释

    1. 最新文章 Wordpress最新文章的调用可以使用一行很简单的模板标签 wp_get_archvies来 实现. 代码如下: <?php get_archives('postbypost' ...

  8. ip聚合(百度之星资格赛1003)

    IP聚合 点击这里 Problem Description 当今世界,网络已经无处不在了,小度熊由于犯了错误,当上了度度公司的网络管理员,他手上有大量的 IP列表,小度熊想知道在某个固定的子网掩码下, ...

  9. Oracle EBS-SQL (INV-7):检查接收中记录数.sql

    select      msi.segment1           物料编码,       msi.description          物料描述,      sum(rs.quantity)  ...

  10. Cacti 是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具

    Cacti 是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具. mysqlreport是mysql性能监测时最常用的工具,对了解mysql运行状态和配置调整都有很大 ...