1:getSupportFragmentManager.commit()报错 IllegalStateException: Can not perform this action after onSaveInstanceState:
解决办法:将commit替换成commitAllowingStateLoss()
2:setBackgroundResource不显示
解决办法:改成那个setImageResource
3:listview或者gridview状态错乱
解决思路:利用一个map<Integer,View>保存getView的缓存状态,通过map进行判断获取
解决办法:1.在HoldView类中定义一个Map<Integer,View> map的变量
2.将getView修改成如下格式
if (!map.containsKey(position) || map.get(position) == null) {
convertView = LayoutInflater.from(getContext()).inflate(R.layout.XXX, null);
holdView = new HoldView();
holdView.xxx = (XXX)convertView.findViewById(R.id.XXX);
convertView.setTag(holdView);
map.put(position, convertView);
} else {
convertView = map.get(position);
holdView = convertView.getTag();
}
4:pageAdapter.notifyDataSetChanged无法成功通知数据更新(对应场景:在做图片预览滑动时需要支持删除图片的功能)
解决办法:在pagerAdapter中复写
@Override
public int getItemPosition(Object object) { // 复写方法,解决数据不及时更新的问题
return POSITION_NONE;
}
5:屏幕适配问题:直接设置LayoutParams(30,30)会在各个不同的手机上适配不了。
解决办法:利用一个工具类
public class DensityUtil {
/**
* 根据手机的分辨率从 dp 的单位 转成为 px(像素)
*/
public static int dip2px(Context context, float dpValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (dpValue * scale + 0.5f);
}
/**
* 根据手机的分辨率从 px(像素) 的单位 转成为 dp
*/
public static int px2dip(Context context, float pxValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (pxValue / scale + 0.5f);
}
}
android工作小结
最新推荐文章于 2022-11-08 09:37:33 发布