- 以下的錯誤的筆記是我在實(shí)際開發(fā)中遇到的一些個錯誤捻脖,目的是提高自己的水平鸠窗,有些錯誤是挺簡單的但有時候在使用的時候沒有注意就造成了錯誤,如果有錯誤的地方請指正比被,謝謝色难。
創(chuàng)建一個application不能忘記在mainfest文件里面申明
Realm數(shù)據(jù)庫的javabean不能少了無參構(gòu)造方法,并且不能重寫toString的方法
在RecycleView 中HorizontalScrollView無法設(shè)置點(diǎn)擊事件等缀,只能是子布局可以枷莉。
使用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()中沒有參數(shù)可直接寫成
ViewPager :
setOffscreenPageLimit(count); 這個方法是viewpager保留多少個頁面
使用butterknife如果控件找不到可以再前加一個optional的注解
在使用注解的時候,注入前對象是空的尺迂,注入之后對象才不為空笤妙,不能在注入之前讓對象調(diào)用方法,應(yīng)該在注入后調(diào)用方法噪裕。
popwindow點(diǎn)擊外面消失setOutSideTouchable(true)一定要設(shè)置在showAtLocation之前否則點(diǎn)擊外面沒有反應(yīng)
popwindow在activity之外showAtLocation,或者是在Activity的onCreate()函數(shù)里面調(diào)用了showAtLocation
會出現(xiàn)異常unable to add window -- token null is not valid;is your activity running?
xml布局文件中加了onClick屬性在代碼中添加OnclickListener會讓按鈕第一次點(diǎn)擊失效
https://github.com/jiang111/awesome-android-tips 一些小知識以及一些錯誤的信息
recyclerview 的 Layoutmanager 可以直接申明在 xml 中,具體代碼可查看RecyclerView.createLayoutManager 方法
Android Data Binding中的ViewModel是根據(jù)layout自動生成的Binding類蹲盘,
如果layout的名稱是movie_item.xml,生成的Binding類名稱就是MovieItemBinding膳音。
RxJava操作符
當(dāng)創(chuàng)建Observable流的時候召衔,compose()會立即執(zhí)行,猶如已經(jīng)提前寫好了一個操作符一樣祭陷,而flatMap()則是在onNext()
被調(diào)用后執(zhí)行苍凛,onNext()的每一次調(diào)用都會觸發(fā)flatMap(),也就是說颗胡,flatMap()轉(zhuǎn)換每一個事件毫深,而compose()轉(zhuǎn)換的
是整個數(shù)據(jù)流。
json字符中有null的jsonformat會解析成Object 要將他改成String 類型
post請求參數(shù)順序不固定
請求參數(shù)Request里頭的數(shù)據(jù)不能寫死毒姨,不然每次傳遞參數(shù)都是相同的哑蔫,數(shù)據(jù)得不到刷新
多個list處理的時候,要細(xì)心,list不能寫錯闸迷,否則數(shù)據(jù)會異常顯示
linearGradient里面的參數(shù)不能寫成android.R.color下面的顏色嵌纲,否則無法識別
android中的序列化官方推薦Parceble,其實(shí)Parceble最好用于內(nèi)存之間數(shù)據(jù)的交換,如果要把數(shù)據(jù)寫入硬盤的話,推薦實(shí)現(xiàn)
Serializable接口
tools:text="這段話只在預(yù)覽時能看到,運(yùn)行以后就看不到了"
6.0之后getResources().getColor()方法被廢棄了,大家可以用ContextCompat.getColor(context,
R.color.color_name)替換腥沽,ContextCompat 是 v4 包里的逮走,請放心使用,另外還有g(shù)etDrawable()等方法
在使用clipChildren使得底部上突今阳,加上一個layout_gravitt=”bottom”可以實(shí)現(xiàn)控件上移
android:ellipsize="end"
android:maxLength="6"
這兩個屬性不能同時用师溅,只能顯示下面這個maxLength的效果,ellipsize的效果沒 有出來
一般高度為48dp
小的圖標(biāo)增加點(diǎn)擊范圍的方法盾舌,寬高設(shè)成標(biāo)題欄的最大高度
<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) {
}這個方法墓臭,不然第一頁和第二頁會沒有一個跳變的效果
內(nèi)存溢出可能的原因是方法重復(fù)調(diào)用導(dǎo)置,相當(dāng)于重復(fù)調(diào)用一個方法
Recyclerview嵌套要重新計(jì)算高度,單個不用嵌套
Recyclerview設(shè)置不復(fù)用helper.setIsRecyclable(false);
動態(tài)添加一個view的時候妖谴,第二個參數(shù)要選要添加的父view否則無法添加成功
沒有設(shè)置singleline會導(dǎo)置鍵盤上的發(fā)送按鈕不顯示
Singleinstance 切換到桌面回來點(diǎn)返回鍵會切到桌面,改成singletask可以解決問題
Recyclerview notifisetdatachange對list來說不能賦值操作list = otherlist只能本身進(jìn)行操作窿锉,可以先clear()
Butterknife使用沒有引用控件要去掉,ButterKnife.bind(this);
Recyclerview 和swiprefreshlayout使用的時候涉及到數(shù)據(jù)清空的操作存在bug解決方案如下
List add一個對象的時候不能使用一個全局的變量膝舅,會導(dǎo)致list 里面揚(yáng)有的對象都是同樣的嗡载,改了后面的對象,前面的也
會改變的仍稀。
在使用RecycerView過程中
View inflate = mInflater.inflate(R.layout.item_recycler, null, false);//item的布局設(shè)置的match_parent是沒有效果的洼滚,第二個參數(shù)要指定父view
View inflate = mInflater.inflate(R.layout.item_recycler, parent, false);//正常的顯示