【BUG笔记】Android 常见问题解决方案记录

1、URL query string must not have replace block. For dynamic query parameters u
去掉url中问号后面的字段,只使用@Query注解

2、引用library中activity时R资源找不到的问题
library中layout不能与主app中layout重名

3、ListView setSelectionFromTop API17下无效的问题
放到post中执行即可

4、属性动画不能正确执行完成的问题
在使用ObjectAnimator.ofInt方法时遇到了卡顿,执行一半、不能正确执行的问题
换成ValueAnimator即可解决

5、android 5.0 设置adjustResize后,软键盘无法顶起页面
在根布局上加上fitsSystemWindow=”true”即可

6、WebView视频封面导致的bug:
Attempt to invoke virtual method 'int android.graphics.Bitmap.getWidth()' on a null object reference
解决方法如下:

    class MyWebChromeClient extends WebChromeClient {

        @Nullable
        @Override
        public Bitmap getDefaultVideoPoster() {
            //Android8.0以上的手机可以会遇到如下崩溃
            //Attempt to invoke virtual method 'int android.graphics.Bitmap.getWidth()' on a null object reference
            //需要复写此方法解决
            if (super.getDefaultVideoPoster() == null) {//这个地方是加载h5的视频列表 默认图   点击前的视频图
                return BitmapFactory.decodeResource(getApplicationContext().getResources(), R.drawable.ic_launcher);
            } else {
                return super.getDefaultVideoPoster();
            }
        }
}

7、多Webview共存 加载异常问题
在每个webview中的onPause、onResume中依次加入以下方法即可解决问题:

webView.pauseTimers();
webView.resumeTimers();

具体原因不明。

8、华为手机popwindow背景不变暗的问题

PopupWindow popupWindow = new PopupWindow(this);
WindowManager.LayoutParams lp = getWindow().getAttributes();
//设置显示时的背景透明度0.7f
lp.alpha = 0.7f;
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
getWindow().setAttributes(lp);
popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {    
    @Override
    public void onDismiss() {
          WindowManager.LayoutParams lp = getWindow().getAttributes();
          //dismiss后恢复1f
          lp.alpha = 1f;
          getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
          getWindow().setAttributes(lp);    
        }
});

关键代码:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);

9、Android3.0帧动画不执行的问题
如下代码:

AnimationDrawable animationDrawable = (AnimationDrawable)imageview.getBackground();
animationDrawable.start();//启动动画

在Android3.0上会遇到不执行的问题,需修改为:

AnimationDrawable animationDrawable = (AnimationDrawable)imageview.getBackground();
imageview.post(new Runnable(){
    @override
    public void run(){
        animationDrawable.start();//启动动画
    }
})
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容