首页 > 系统 > Android > 正文

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

2019-11-14 22:46:41
字体:
来源:转载
供稿:网友
记录一下学习Android时遇到一些问题 Posted on 2015-01-29 01:16 Frsq 阅读(...) 评论(...) 编辑 收藏

实在是不擅长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 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!


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表