关于android笔记
android笔记我准备用来记录下我在学习android中存在的 一些问题,不像平时的学习记录的博客,我想慢慢开始写下一些我自己的见解,多思考才能多进步,共勉。

一、 @Override的作用是什么

在编写代码的时候,我经常能看到@Override,可是删除它之后对程序并没有影响,而且有时候它还会报错,所以这个单词到底有什么作用呢。
@Override是伪代码,表示重写(当然不写也可以),不过写上有如下好处:

  1. 可以当注释用,方便阅读
  2. 编译器可以给你验证@Override下面的方法名是否是你父类中所有的,如果没有则报错

例如:
在重写父类的onCreate时,在方法前面加上@Override 系统可以帮你检查方法的正确性。如:

public void onCreate(Bundle savedInstanceState){…….}

这种写法是正确的,如果你写成

public void oncreate(Bundle savedInstanceState){…….}

这样编译器回报如下错误以确保你正确重写onCreate方法。(因为oncreate应该为onCreate)

The method oncreate(Bundle) of type HelloWorld must override or implement a supertype method。

而如果不加@Override,则编译器将不会检测出错误,而是会认为你新定义了一个方法oncreate。

二、活动模板

这个呢也是我某一天写Handler的时候,我觉得,天哪,怎么还要自己一个一个的敲代码,android studio都已经这么强大了,应该有可以偷懒的方法吧,所以我找到了android studio的活动模板这各功能。那怎么什么是活动模板又怎么定义呢。
例如
我们输入sout 后按enter 键,Android Studio 会自动帮我们写入System.out.println();其实sout 就是AS自带的一个活动模板。所以说活动模板就是我们常用代码的一个缩写。开发中有很多代码都会重复出现,因此我们就可以通过自定义活动模板来偷个懒啦。
配置方法

  • File | Settings|Editor | Code Style | Live Templates
  • 点击最右侧的加号并选择Template Group
  • 在弹出的对话框中输入一个活动模板分组的名称,如custom
  • 在左侧选中中创建的custom 分组,点击右边的加号选择Live Template
  • 在Abbreviation 中对输入psh (缩写的单词),Description输入自动生成Handler(模板描述)
  • 在Template text 中输入以下代码
private static class MyHandler extends Handler {
        private WeakReference<$className$> activityWeakReference;
        public MyHandler($className$ activity) {
            activityWeakReference = new WeakReference<$className$>(activity);
        }
        @Override
        public void handleMessage(Message msg) {
            $className$ activity = activityWeakReference.get();
            if (activity != null) {

            }
        }
    }

android studio生成覆盖方法 android studio @override_xml


- 点击下方的Define 按钮,选中java 表示这个模板用于java代码

- 点击右侧的Edit variables选择Expression 下拉框中的className 并勾选Skip if…

这个操作的作用是,AS会自动将我们在上一步中用’$’符包裹的className自动替换为当前类不含包名的类名

- 点击Apply 和Ok 让设置生效。

三、在写arrayadapter的时候报错 java.lang.IllegalStateException: ArrayAdapter requires the resource ID to be a TextView

这个问题呢其实我还没有真的解决,因为当时Item的布局我是自己写的,用来两个控件,一个TextView一个CheckBox,然后运行的时候就报错了,我百度了一下这个报错的原因是自己写的Item的xml,但仅能有一个textview。连Layout也不能有。而且xmlns:android=”http://schemas.android.com/apk/res/android” 这句话要写在textView的根节点下。如下:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"  
android:layout_width="wrap_content"   
android:layout_height="wrap_content"    
android:id="@+id/online_user_list_item_textview" >  
</TextView>

可是我想加入布局文件想有多个空间怎么办,比如在加一个Button,那就必须有layout,这时adapter应该怎么定义?这个问题还没有解决,目前只解决了ArrayAdapter requires the resource ID to be a TextView这个报错,他是说arrayAdapter需要的资源ID是一个TextView,所以布局文件只能有一个TextView。