实在是不擅长Android开发,但在努力的学习当中。这篇文章就记录一下学习过程中,自己犯下的一些错误,同时也让自己记住别再犯同样的错误了。各位看官勿见笑!


一个关于空指针的错误

错误类型一:

  未对对象进行初始化导致了空指针的错误。类似于如下:

public void onActivityCreated(Bundle savedInstanceState) {

        super.onActivityCreated(savedInstanceState);
Log.i(TAG, "------onActivityCreated------"); //未对db_manager进行初始化,就是下面的new,直接就调用了最后一句
db_manager = new DatabaseManager(context);
totalCount = db_manager.getTotalCount();

  实在是忘记了对其进行初始化,通过错误寻找,然后找到了原因。解决这个问题的时候,先根据错误提示,找到错误的行,然后根据错误类型预判什么位置出错了,当所有想到的方法都用尽了,才寻找其他人帮助。也许这就是成长之路。

错误类型二:

  多个引用变量导致的错误(不知道描述是否正确?望批正),类似如下:

public class NoteFragment extends ListFragment implements OnScrollListener,
OnClickListener { public static final String TAG = "NoteFragment";
public Context context; // 存储上下文对象
public Activity activity; private Thread mThread;
// 已经定义了一个全局的适配器adapter ----1
private SimpleAdapter adapter;
.......
}
public void onActivityCreated(Bundle savedInstanceState) {

        super.onActivityCreated(savedInstanceState);
Log.i(TAG, "------onActivityCreated------");
......
//此处重复的申明一个adapter,实际应该去掉SimpleAdapter,此类型上当了两次
SimpleAdapter adapter = new SimpleAdapter(getActivity(), listItems,
R.layout.note_list_item, new String[] { "tvNoteTitle",
"tvNoteContent", "tvNoteCreateTime" }, new int[] {
R.id.tvNoteTitle, R.id.tvNoteContent,
R.id.tvNoteCreateTime });
setListAdapter(adapter); ...... }

现在简单的记录一下这些问题,第一个错误类型比较好理解,第二个暂时还不了解其原理,有空的时候细究一下,然后再补充进来。

问题剖析:

  其实,两类型的问题都可以归结为一个类型。为了便已说明,定义一个简单的类:

class Student{

    String name = "张三";
int age = "20";
int number = "30";
String address = "广东广州";
  
}

那在对此类进行使用的时候,通常的做法为:

Student student;  // ------1

public void getName(){

    String name = student.name;    // -------2

-------------------------------
Student student = new Student(); //------3
String name = student.name;
} public void getAge(){
  
  int age = student.age; //-----4
}

1是创建了Student类的引用变量,但是2在使用的时候并没有对创建Student类的对象,导致了,在2处为报空指针错误。

4在处也会出现同样的错误。原因是student只在getName()中3处重复创建了Student类的对象,而在getAge中并没有,故导致了4处student为空的引用变量,但没有对应对象。

关于JAVA对象引用,以及对象赋值,请看这里,非常详细,看了这篇文章才了解的犯下的错误的原因。

 Android 自动生成文件R.java的丢失问题

  此问题的解决方式有多种,网上能够查询得到很多,这里也做一个摘录,然后再最后补上自己解决问题的一种方法,见下:

  1. 使用clean方法将R文件找回

  2. 从其他地方拷贝一份R文件到目录下,然后改动一下资源文件内容,会更新R文件

  3. 查看res目录中,资源文件的命名,是否存在大写,如Result.xml,这里需要改为小写

  好了,依次按照上面的步骤做了,我的R文件还没出现。然后第三点给了我一点提示,仔细查看了资源文件,发现在colors.xml中,存在相同名字的item,将其去重后,R文件回来了。

  4. 查看res目录中,各资源文件中是否存在相同的重复命名的item或结构,去重,R文件出现。

PS:主要是在写colors.xml的时候,文件没有提示错误,这样R文件一直不能更新,导致在程序中出现别的错误,或被覆盖,或被遗忘。重要的是,找准错的位置。

Android以及其他应用程序出现的signature error问题

  出现这样问题的情况:

  1. 程序签名错误

  2. 程序所在系统和服务器系统在时间戳上不一直,导致了签名错误

我在慢慢的找到自己的节奏,2015年,来一个小小的转变,Fighting!

记录一下学习Android时遇到一些问题的更多相关文章

  1. 记录一下学习Android的小知识

    目前要设计即时通讯的整体架构,包括服务端.Android.IOS.PC.平板等等系统,所以需要研究一下手机的实现方式,开始从Android入手,偶尔在这记录下小知识. ADT: 1.页面功能请求结构, ...

  2. 记录初学者学习Hive时踩过的坑

    1. 缺少MySQL驱动包 1.1 问题描述 Caused by: org.datanucleus.store.rdbms.connectionpool.DatastoreDriverNotFound ...

  3. 从零开始学习Android(一)Android环境的搭建

    好久没有开始写博客了,最近开始学习Android,所以想把学习的笔记都一一记录下来.一来是方便自己以后资料的查询,其次也是给Android新手朋友进行学习使用,再次也希 望得到高手的指点.废话少说,我 ...

  4. 一起来学习Android自定义控件1

    概述 Android已经为我们提供了大量的View供我们使用,但是可能有时候这些组件不能满足我们的需求,这时候就需要自定义控件了.自定义控件对于初学者总是感觉是一种复杂的技术.因为里面涉及到的知识点会 ...

  5. 学习android学习必备的java基础知识--四大内部类

    学习android必备的java基础知识--四大内部类 今天学习android课程,因为我的主专业是JAVA,但是兴趣班却有这其他专业的同学,学习android 需要具备一些java的基础知识,因此就 ...

  6. 深入学习Android有关网络连接的内容

    基于实际项目中碰到的些许问题,开始重新深入学习Android网络连接有关知识. Android的4.1.2版本的AndroidHttpClient模块setSoTimeout之后实际超时时间和设置的时 ...

  7. android初级应用到高端架构教程------ 完整体系化学习android开发

    系统的学习android开发技术,从应用到底层,再到架构,告别乱糟糟的学习方式,不再是抓不住重点.从上到下贯通,全面学习android开发.让你拥有清晰的思路,一步步学习android开发! 一般而言 ...

  8. 学习Android路上的一些感慨和总结,慢慢来,比较快!

    学习Android路上的一些感慨和总结,慢慢来,比较快! 一直想对自己的学习路程做一个总结,来告别某一个阶段的过去,迎接某一个阶段的来临,一直抽不出时间来,于是零零散散的写了点-,到现在,也已经积攒了 ...

  9. 学习Android过程中遇到的问题及解决方法——网络请求

    在学习Android的网络连接时遇到崩溃或异常(出现的问题就这两个,但是不稳定)的问题,先上代码,看看哪里错了(答案在文末) activity_main.xml: <?xml version=& ...

随机推荐

  1. 查杀linux线程指令

      工作中重启环境时常常出现内存溢出等等问题,往往需要查杀进程来帮助重启成功,下面就查杀线程的详细指令做下总结:   1.查找需要kill掉的线程: ps -elf|grep [线程关键信息] 比如: ...

  2. 李洪强iOS开发之【Objective-C】08-self关键字

    一.Java中的this只能用在动态方法中,不能用在静态方法中 1.在动态方法中使用this关键字 1 public class Student { 2 private int age; 3 publ ...

  3. TCoolMemo

    我们先起个名字叫做TCoolMemo.以上篇已经讲了很多组件的技术,这里就只说出几个重点.其余不多说了. 首先,该Memo从CustomMemo继承,它有这样外观:属于平面的,边框是可以设置颜色的线, ...

  4. Java NIO原理图文分析及代码实现

    原文: http://weixiaolu.iteye.com/blog/1479656 目录: 一.java NIO 和阻塞I/O的区别      1. 阻塞I/O通信模型      2. java ...

  5. Android Cursor空指针的问题

    最近几天无聊自己动手写个音乐播放器,用到Cursor来取得数据库中音乐文件的信息,但是当用到Cursor的时候总是报空指针错误,后来发现是模拟器上没有音乐文件,使用Cursor的时候 ,若Cursor ...

  6. django定期执行任务

    要在django项目中定期执行任务,比如每天一定的时间点抓取数据,刷新数据库等,可以参考stackoverflow的方法,先编写一个manage.py命令,然后使用crontab来定时执行这个命令. ...

  7. html5 touch事件实现触屏页面上下滑动(二)

    五一小长假哪都没去,睡了三天,今天晕晕沉沉的投入工作了,但还是做出了一点点效果 上周用html5的touch事件把简单的滑动做出来了,实现了持续页面上下滑动的效果,参考之前 的文章及代码html5 t ...

  8. STL源码中map和set中key值不能修改的实现

    前言 最近正好刚刚看完,<stl源码剖析>这本书的map和set的源码部分.但是看完之后又突然发现,之前怎么没有注意到map和set容器中key不能修改是怎么实现的.故,特此整理如下. s ...

  9. 函数rec_get_nth_field_offs_old

    /************************************************************//** The following function is used to ...

  10. WEB-INF目录与META-INF目录的作用

    /WEB-INF/web.xml Web应用程序配置文件,描述了 servlet 和其他的应用组件配置及命名规则. /WEB-INF/classes/包含了站点所有用的 class 文件,包括 ser ...