- 以下的错误的笔记是我在实际开发中遇到的一些个错误,目的是提高自己的水平,有些错误是挺简单的但有时候在使用的时候没有注意就造成了错误,如果有错误的地方请指正,谢谢。
创建一个application不能忘记在mainfest文件里面申明
Realm数据库的javabean不能少了无参构造方法,并且不能重写toString的方法
在RecycleView 中HorizontalScrollView无法设置点击事件,只能是子布局可以。
使用dagger2引入
compile 'com.google.dagger:dagger:2.0.2'
apt 'com.google.dagger:dagger-compiler:2.0.2'
compile 'org.glassfish:javax.annotation:10.0-b28'
apply plugin: 'com.neenbedankt.android-apt'
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
使用dagger2的module的提供方法必须以provide开头
使用dagger2 DaggerRetrofitComponent.builder().retrofitModule(new RetrofitModule()).build();
如果new RetrofitModule()中没有参数可直接写成
ViewPager :
setOffscreenPageLimit(count); 这个方法是viewpager保留多少个页面
使用butterknife如果控件找不到可以再前加一个optional的注解
在使用注解的时候,注入前对象是空的,注入之后对象才不为空,不能在注入之前让对象调用方法,应该在注入后调用方法。
popwindow点击外面消失setOutSideTouchable(true)一定要设置在showAtLocation之前否则点击外面没有反应
popwindow在activity之外showAtLocation,或者是在Activity的onCreate()函数里面调用了showAtLocation
会出现异常unable to add window -- token null is not valid;is your activity running?
xml布局文件中加了onClick属性在代码中添加OnclickListener会让按钮第一次点击失效
https://github.com/jiang111/awesome-android-tips 一些小知识以及一些错误的信息
recyclerview 的 Layoutmanager 可以直接申明在 xml 中,具体代码可查看RecyclerView.createLayoutManager 方法
Android Data Binding中的ViewModel是根据layout自动生成的Binding类,
如果layout的名称是movie_item.xml,生成的Binding类名称就是MovieItemBinding。
RxJava操作符
当创建Observable流的时候,compose()会立即执行,犹如已经提前写好了一个操作符一样,而flatMap()则是在onNext()
被调用后执行,onNext()的每一次调用都会触发flatMap(),也就是说,flatMap()转换每一个事件,而compose()转换的
是整个数据流。
json字符中有null的jsonformat会解析成Object 要将他改成String 类型
post请求参数顺序不固定
请求参数Request里头的数据不能写死,不然每次传递参数都是相同的,数据得不到刷新
多个list处理的时候,要细心,list不能写错,否则数据会异常显示
linearGradient里面的参数不能写成android.R.color下面的颜色,否则无法识别
android中的序列化官方推荐Parceble,其实Parceble最好用于内存之间数据的交换,如果要把数据写入硬盘的话,推荐实现
Serializable接口
tools:text="这段话只在预览时能看到,运行以后就看不到了"
6.0之后getResources().getColor()方法被废弃了,大家可以用ContextCompat.getColor(context,
R.color.color_name)替换,ContextCompat 是 v4 包里的,请放心使用,另外还有getDrawable()等方法
在使用clipChildren使得底部上突,加上一个layout_gravitt=”bottom”可以实现控件上移
android:ellipsize="end"
android:maxLength="6"
这两个属性不能同时用,只能显示下面这个maxLength的效果,ellipsize的效果没 有出来
一般高度为48dp
小的图标增加点击范围的方法,宽高设成标题栏的最大高度
<ImageView
android:id="@+id/iv_me_set"
android:layout_width="48dp"
android:layout_height="48dp"
android:scaleType="center"
android:src="@drawable/icon_me_setting" />
Viewpager的adapter要重写
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
}这个方法,不然第一页和第二页会没有一个跳变的效果
内存溢出可能的原因是方法重复调用导置,相当于重复调用一个方法
Recyclerview嵌套要重新计算高度,单个不用嵌套
Recyclerview设置不复用helper.setIsRecyclable(false);
动态添加一个view的时候,第二个参数要选要添加的父view否则无法添加成功
没有设置singleline会导置键盘上的发送按钮不显示
Singleinstance 切换到桌面回来点返回键会切到桌面,改成singletask可以解决问题
Recyclerview notifisetdatachange对list来说不能赋值操作list = otherlist只能本身进行操作,可以先clear()
Butterknife使用没有引用控件要去掉,ButterKnife.bind(this);
Recyclerview 和swiprefreshlayout使用的时候涉及到数据清空的操作存在bug解决方案如下
List add一个对象的时候不能使用一个全局的变量,会导致list 里面扬有的对象都是同样的,改了后面的对象,前面的也
会改变的。
在使用RecycerView过程中
View inflate = mInflater.inflate(R.layout.item_recycler, null, false);//item的布局设置的match_parent是没有效果的,第二个参数要指定父view
View inflate = mInflater.inflate(R.layout.item_recycler, parent, false);//正常的显示