接入腾讯bugly高德地图报错
[java.lang.NullPointerException]
Attempt to invoke virtual method 'com.amap.api.maps.UiSettings com.amap.api.maps
只有一个空指针却没有其他提示,我估计是libs下的jni库的问题,为了赶进度,这里简单把bugly去掉,之后高德地图正常。
嵌套的子fragment按钮设置点击背景无效
刚开始我以为是嵌套的子fragment问题,搞了半小时,后来发现必须要在fragment里把这个按钮的点击事件写上才有点击效果,真尼玛莫名其妙啊,以前不这样啊,世界变化的太快!
嵌套子fragment使用viewpage不显示
因为extends FragmentPagerAdapter时,传递的FragmentManager是父节点的,改为getChildFragmentManager()即可
重写equals和hashCode函数后,Arraylist调indexOf(object)或者contains(object)无效
场景:
public class ContactsBean implements Serializable {
public String name;
public String number;
public String sort;
public ContactsBean() {
}
public ContactsBean(String name, String number, String sort) {
this.name = name;
this.number = number;
this.sort = sort;
}
@Override
public String toString() {
return "ContactsBean{" +
"name='" + name + '\'' +
", number='" + number + '\'' +
", sort='" + sort + '\'' +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if(null == o)return false;
if (o instanceof String){
String thatNumber = (String) o;
return number.equals(thatNumber);
}else if(o instanceof CallLogBean){
CallLogBean callLogBean = (CallLogBean) o;
if(null == callLogBean.number)
return false;
return callLogBean.number.equals(number);
}else if(o instanceof ContactsBean){
ContactsBean that = (ContactsBean) o;
if(null == that.number)
return false;
return that.number.equals(number);
}
return false;
}
@Override
public int hashCode() {
return number != null ? number.hashCode() : 0;
}
}
拿ContactsBean和String来对比,因为要判断电话号码和该对象的电话号码是否一致。这时候调用Arraylist调indexOf(object)或者contains(object)无效。看一下源码
public boolean contains(Object o) {
return indexOf(o) >= 0;
}
最终去看indexOf
public int indexOf(Object o) {
if (o == null) {
for (int i = 0; i < size; i++)
if (elementData[i]==null)
return i;
} else {
for (int i = 0; i < size; i++)
if (o.equals(elementData[i]))
return i;
}
return -1;
}
关键就在
if (o.equals(elementData[i]))
传的Object是String,那么这里会调用String的equals函数,解决办法就是不要用Arraylist自带函数,把equals函数的两端调换一下位置即可。
for(int i=0;i<mAllContacts.size();i++){
if(mAllContacts.get(i).equals(number)){
name = mAllContacts.get(i).name;
break;
}
}
RelativeLayout、LinearLayout点两下才有onClick事件问题
因为在属性里设置了
android:clickable="true"
android:focusableInTouchMode="true"
这两个属性有冲突,去掉android:focusableInTouchMode="true"即可。
另外在background里设置的点击效果drawable文件里,要把android:state_focused="true"去掉,只保留android:state_pressed="true",否则点击效果不出来。