Android 学习笔记-错误日志

2017-01-14 10:06:38来源:http://www.jianshu.com/p/73a91e996b50作者:zgsHighwin人点击


以下的错误的笔记是我在实际开发中遇到的一些个错误,目的是提高自己的水平,有些错误是挺简单的但有时候在使用的时候没有注意就造成了错误,如果有错误的地方请指正,谢谢。


创建一个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的注解


ButterKnife.png

 在使用注解的时候,注入前对象是空的,注入之后对象才不为空,不能在注入之前让对象调用方法,应该在注入后调用方法。


ToolBar.png
popwindow点击外面消失setOutSideTouchable(true)一定要设置在showAtLocation之前否则点击外面没有反应


PopupWindow.png
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 方法


Recyclerview在布局文件中设置LayoutManager.png


Recyclerview设置的styable样式.png


开发过程一般用这种进行预览.png


MarkDown高亮代码块.png

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 类型


gson会转换成Object类型.png

post请求参数顺序不固定

请求参数Request里头的数据不能写死,不然每次传递参数都是相同的,数据得不到刷新

多个list处理的时候,要细心,list不能写错,否则数据会异常显示

linearGradient里面的参数不能写成android.R.color下面的颜色,否则无法识别


使用线性渐近色.png

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


Paste_Image.png


Paste_Image.png
  小的图标增加点击范围的方法,宽高设成标题栏的最大高度
<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否则无法添加成功


addView.png
没有设置singleline会导置键盘上的发送按钮不显示


Paste_Image.png

  Singleinstance 切换到桌面回来点返回键会切到桌面,改成singletask可以解决问题

  Recyclerview notifisetdatachange对list来说不能赋值操作list = otherlist只能本身进行操作,可以先clear()

 Butterknife使用没有引用控件要去掉,ButterKnife.bind(this);

Recyclerview 和swiprefreshlayout使用的时候涉及到数据清空的操作存在bug解决方案如下



recyclerview和swiprefreshlayout崩溃bug处理.png
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);//正常的显示



最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台