NullPointerException空指针异常——没有事先加载布局文件到acitivy——缺少:setContentView(R.layout.activity_setup_over);
空指针异常:
04-27 01:13:57.270: E/AndroidRuntime(4942): FATAL EXCEPTION: main
04-27 01:13:57.270: E/AndroidRuntime(4942): Process: com.itheima.mobilesafe74, PID: 4942
04-27 01:13:57.270: E/AndroidRuntime(4942): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.itheima.mobilesafe74/com.itheima.mobilesafe74.activity.SetupOverActivity}: java.lang.NullPointerException
04-27 01:13:57.270: E/AndroidRuntime(4942): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
04-27 01:13:57.270: E/AndroidRuntime(4942): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
04-27 01:13:57.270: E/AndroidRuntime(4942): at android.app.ActivityThread.access$800(ActivityThread.java:135)
04-27 01:13:57.270: E/AndroidRuntime(4942): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
04-27 01:13:57.270: E/AndroidRuntime(4942): at android.os.Handler.dispatchMessage(Handler.java:102)
04-27 01:13:57.270: E/AndroidRuntime(4942): at android.os.Looper.loop(Looper.java:136)
04-27 01:13:57.270: E/AndroidRuntime(4942): at android.app.ActivityThread.main(ActivityThread.java:5017)
04-27 01:13:57.270: E/AndroidRuntime(4942): at java.lang.reflect.Method.invokeNative(Native Method)
04-27 01:13:57.270: E/AndroidRuntime(4942): at java.lang.reflect.Method.invoke(Method.java:515)
04-27 01:13:57.270: E/AndroidRuntime(4942): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
04-27 01:13:57.270: E/AndroidRuntime(4942): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
04-27 01:13:57.270: E/AndroidRuntime(4942): at dalvik.system.NativeStart.main(Native Method)
04-27 01:13:57.270: E/AndroidRuntime(4942): Caused by: java.lang.NullPointerException
04-27 01:13:57.270: E/AndroidRuntime(4942): at com.itheima.mobilesafe74.activity.SetupOverActivity.initUI(SetupOverActivity.java:46)
04-27 01:13:57.270: E/AndroidRuntime(4942): at com.itheima.mobilesafe74.activity.SetupOverActivity.onCreate(SetupOverActivity.java:38)
04-27 01:13:57.270: E/AndroidRuntime(4942): at android.app.Activity.performCreate(Activity.java:5231)
04-27 01:13:57.270: E/AndroidRuntime(4942): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
04-27 01:13:57.270: E/AndroidRuntime(4942): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
相应代码:
package com.itheima.mobilesafe74.activity; import com.itheima.mobilesafe74.R;
import com.itheima.mobilesafe74.utils.ConstentValue;
import com.itheima.mobilesafe74.utils.SpUtil;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView; /**
* 说明 :手机安全导航设置完成的界面
*/
public class SetupOverActivity extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_setup_over);
boolean setup_over = SpUtil.getBoolean(this, ConstentValue.SETUP_OVER,
false);
if (setup_over)
{
// 手机安全导航设置完成跳转到设置完成的界面
setContentView(R.layout.activity_setup_over);
} else
{
// 手机安全导航设置没有完成跳转到导航设置1的界面
Intent intent = new Intent(this, Setup1Activity.class);
startActivity(intent);
// 跳转到一个新的界面时需要关闭当前界面
finish();
}
initUI();
} private void initUI()
{ TextView tv_safe_number = (TextView) findViewById(R.id.tv_safe_number);
String phone = SpUtil.getString(this, ConstentValue.CONTACT_PHONE, "");
tv_safe_number.setText(phone);
// 重新进入设置向导textview点击侦听
TextView tv_reset_setting = (TextView) findViewById(R.id.tv_reset_setting);
tv_reset_setting.setOnClickListener(new OnClickListener()
{ @Override
public void onClick(View v)
{
// 手机安全导航设置没有完成跳转到导航设置1的界面
Intent intent = new Intent(getApplicationContext(),
Setup1Activity.class);
startActivity(intent);
// 跳转到一个新的界面时需要关闭当前界面
finish();
}
});
}
}
分析:由于调用initUI(),方法之前没有加载布局文件setContentView(R.layout.activity_setup_over);
导致后面45行tv_safe_number和48行tv_reset_setting通过findviewbyid方法调用时报出空指针
解决方案1:在protected void onCreate(Bundle savedInstanceState)方法体中添加setContentView(R.layout.activity_setup_over),
解决方案2:在45行tv_safe_number和48行tv_reset_setting用到这两个指针是做if(tv_safe_number!=null)判断
NullPointerException空指针异常——没有事先加载布局文件到acitivy——缺少:setContentView(R.layout.activity_setup_over);的更多相关文章
- Android 解决在初次打开Activity加载布局文件时,ScrollView滚动条不在顶部的问题
出现这种问题的情况列举:ScrollView中嵌套有(包括自定义)的ListView,GridView时,会出现这种情况 解决办法: 1.在布局加载时让ScrollView上面的那个控件聚焦,具体做法 ...
- QCustomplot使用分享(八) 绘制图表-加载cvs文件
目录 一.概述 二.效果图 三.源码讲解 1.源码结构 2.头文件 3.移动游标 4.设置坐标轴矩形个数 5.添加图表数据 6.设置折线图类型 6.其他函数 四.测试方式 1.测试工程 2.测试文件 ...
- RecyclerView的使用之多种Item加载布局
精益求精,为了更加透彻熟练得掌握,本文再次给大家介石介绍下如何利用RecyclerView实现多Item布局的加载,多Item布局的加载的意思就是在开发过程中List的每一项可能根据需求的不同会加载不 ...
- assets 加载资源文件
引用:http://abc20899.iteye.com/blog/1096620 1.获取资源的输入流 资源文件 sample.txt 位于 $PROJECT_HOME/assets/ 目录下,可以 ...
- Android -- 加载布局
如果在Activity中用到了别的Layout ,比如对话框等,你还要使用对话框中的组件,如TextView等,必须要先加载布局,然后才能使用里面的控件, 如 : View view = View.i ...
- Android四大组件之Activity(活动)及其布局的创建与加载布局
Android四大组件之Activity(活动)及其布局的创建与加载布局 什么是Activity ? 活动(Activity)是包含用户界面的组件,主要用于和用户进行交互的,一个应用程序中可以包含零个 ...
- Android 如何本地加载pdf文件
大部分app打开pdf文件是通过intent调起手机中能打开pdf文件的工具,来查看pdf文件,如果需求是,用户在app内下载好pdf文件后,不通过第三方的工具,本地打开. 这样的需求要怎么实现呢?上 ...
- Java加载资源文件的两种方法
处理配置文件对于Java程序员来说再常见不过了,不管是Servlet,Spring,抑或是Structs,都需要与配置文件打交道.Java将配置文件当作一种资源(resource)来处理,并且提供了两 ...
- java加载properties文件的六中基本方式实现
java加载properties文件的方式主要分为两大类:一种是通过import java.util.Properties类中的load(InputStream in)方法加载: 另一种是通过impo ...
随机推荐
- 针对多条件查询,应对 url 无用 null 值现象处理
多条件查询 应对 url 无用 null 值现象 处理例如:http://xxoo.b2b.com/orders?city_id=5&repertory_id=7&area_id=39 ...
- 【js】关于this指针-理解call、apply、bind
首次讲解视频,听了一下,录音声音太小(暂不知道该怎么调节),老是咳咳,不太流畅.暂时不理想,日后继续努力.(能写出来还不够,还要会说出来) 首先,this指针只存在于函数(function)中.用于指 ...
- P4174 [NOI2006]最大获利(网络流)
P4174 [NOI2006]最大获利 还是最大权闭合子图的题 对于每个中转站$k$:$link(k,T,P_k)$ 对于每个用户$i$.中转站$A_i,B_i$.贡献$C_i$ $link(S,i, ...
- Pycharm 的设置--参数设置(运行.py文件带参数,例如argument)
程序运行时,如果需要输入参数,如下图中程序代码: 在生成exe后,程序在控制台下运行时格式为: 这种情况在调试程序时,如果只是在Pycharm环境中简单执行“Run”菜单下的“Run”命令,会出现以下 ...
- Java多线程的创建与简单使用
一.线程的基本概念 什么是线程:Thread 进程内部的一个执行单元,它是程序中一个单一的顺序控制流程. 线程又被称为轻量级进程(lightweight process) 如果在一个进程中同时运行了多 ...
- Bytom储蓄分红合约解析
储蓄分红合约简介 储蓄分红合约指的是项目方发起了一个锁仓计划(即储蓄合约和取现合约),用户可以在准备期自由选择锁仓金额参与该计划,等到锁仓到期之后还可以自动获取锁仓的利润.用户可以在准备期内(dueB ...
- [IoC容器Unity]第一回:Unity预览
1.引言 高内聚,低耦合成为一个OO架构设计的一个参考标准.高内聚是一个模块或者一个类中成员跟这个模块或者类的关系尽量高,低耦合是不同模块或者不同类之间关系尽量简单. 拿咱国家举例来说,假如你是中国人 ...
- vue引入JQ的方法
在vue中引入jq 用vue-cli脚手架工具构建项目成功后 当需要引入JQ,可用以下方法: 1.首先在package.json里的 dependencies加入"jquery" ...
- MySQL:(二)
多表查询-笛卡尔积 对于数据库中 针对于两张表的记录数的所有记录进行匹配,获得笛卡尔积!⚠️笛卡尔积结果是无效的,必须从笛卡尔积中选取有效的数据结果 !!! -- 显示结果就是笛卡尔积,两个表记录乘积 ...
- ExtJs常用功能
1.判断内容是否修改 1) var cgrid = query_panel.cgrid; var v = cgrid.getValues(); //console.log(v); if (v != & ...