当前位置: 代码迷 >> Android >> 记录一下学习Android时遇到一些有关问题
  详细解决方案

记录一下学习Android时遇到一些有关问题

热度:33   发布时间:2016-04-28 02:33:48.0
记录一下学习Android时遇到一些问题

实在是不擅长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;  // ------1public void getName(){          String name = student.name;    // -------2
-------------------------------
Student student = new Student(); //------3 String name = student.name; }

public void getAget(){
  
  int age = student.age; //-----4
}

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

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

 

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

 

 

 

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

  相关解决方案