赞
踩
(针对自己开发过程中遇到的bug合集记录下来,会持续更新该文章,需要自取,共勉。)
解决:(点击Build选择Select Build Variants把Debug模式选为Reslease重新编译,编译完成后再选回Debug)
解决:这时只要在命令中添加-r即可覆盖安装:adb install -r 你的apk完整路径(温馨提示:打完命令后,直接把要安装的apk拖进命令行)
解决:打开资源管理器性能里面打开资源监视器,接着在在cpu中找有被占用的文件,点结束进程
解决:其原因是工具在打包时会读取 输出目录中的output.json 进行重用 output.json文件不符合预期的格式则会报出该异常处理方式为 删除输出目录中的output.json文件 一般在\app\release\output.json
(解决:在创建链接时,不要频繁创建OkHttpClient,应该把OkHttpClient创建后,缓存起来)
详情:相关博文链接
详情:相关博文链接
导致原因:原理是如果两个具有滑动属性的控件相互嵌套的话,被嵌套的控件的高度会按最开始绑定的高度计算。
与ScrollView嵌套ListView一样会造成无法完全显示数据的问题一样。
解决:相关博文链接
解决:相关博文链接
解决:因为又嵌套了一个ExpandableListView,所以会写两个ExpandableAdapter,解决办法是设置父adapter的getChildrenCount()的返回值为1
@Override
public int getChildrenCount(int groupPosition) {
return 1;
}
解决:重写该样式,去除掉背景。
<style name="AsyncTaskDialog" parent="@android:Theme.Dialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:background">@android:color/transparent</item>
</style>
详情:相关博文链接
问题:一般地,IndexOutOfBoundsException 索引越界异常,一般都是与数组、集合相关。
解决:建议在排错时,着重在这两方面的代码上。
1、java.lang.IndexOutOfBoundsException: Index: 1, Size: 0
这里的size是0,但是index已经为1了,那么就是跳过了index=0,导致了这个报错。
这个bug的是因为,在add元素时,直接指定了index=1,跳过了index=0。应该加判断。
2、java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
这里Index: 0, Size: 0 大概有三种可能:
(1)取了空值
list集合没有添加非空校验,在取第一条数据时,由于list集合为空,直接就报错了
解决:list集合添加非空校验,再取值
(2)使用List的get()方法传参超过List的大小。
(3)使用List.add(int index, E element)方法时,index参数值大于等于集合大小,导致报错。
————————————————
详情:相关博文链接
解决:在尝试将另一个android project下的module导入当前的android project下后,总是无法运行起来,一直报以下错误,大致意思就是告诉你:“Manifest资源文件中有问题了,赶紧去瞧瞧吧”。
1.打开资源文件
2.点击下面的Merged Manifest
3.这时你会看到具体报错信息,修改掉即可
详情:相关博文链接
解决:1、在xml文件中设置 cursorVisible 属性。
<EditText
android:id="@+id/et_input"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:cursorVisible="true"
android:textColor="@color/colorBlack"
android:textCursorDrawable="@drawable/my_cursor"
android:background="@null"
android:textSize="16sp" />
2、在Java代码中设置默认获取焦点: etInput.requestFocus();// 显示输入框的光标
3、在AndroidManifest.xml中设置 fragment的宿主Activity的 windowSoftInputMode 属性为 stateAlwaysHidden。
<activity
android:name=".MainActivity"
android:launchMode="singleTask"
android:windowSoftInputMode="stateAlwaysHidden"/>
详情:相关博文链接
解决:主要是处理NestedScrollView自带的onInterceptTouchEvent方法拦截它的滑动事件。
详情:相关博文链接
解决:需重写外层scrollview,并对拦截onInterceptTouchEvent拦截事件重写,对滑动和点击事件进行处理。可直接在页面中用该重写的scrollview控件。子布局中需要点击事件的则获取焦点,设置监听来处理即可。
public class PaperPreviewNestedScrollView extends NestedScrollView {
public PaperPreviewNestedScrollView(@NonNull Context context) {
super(context);
mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
}
public PaperPreviewNestedScrollView(@NonNull Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
}
public PaperPreviewNestedScrollView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
}
private int downY;
private int mTouchSlop;
@Override//事件拦截
public boolean onInterceptTouchEvent(MotionEvent ev) {
int action = ev.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN:
downY = (int) ev.getRawY();//按下
break;
case MotionEvent.ACTION_MOVE:
int moveY = (int) ev.getRawY();
if (Math.abs(moveY - downY) > mTouchSlop) {//判定为滑动
return true;
}
break;
}
return super.onInterceptTouchEvent(ev);//避免出现该问题Invalid pointerId=-1 in onTouchEvent导致界面闪退
}
}
有篇总结scrollview博文编写让我受益匪浅,大家都可以学习借鉴一下:相关博文链接
①添加依赖Gradle Scripts->build.gradle->dependencies
===》 implementation ‘de.hdodenhof:circleimageview:3.1.0’
②在布局文件中引入代码:
<de.hdodenhof.circleimageview.CircleImageView
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/profile_image"
android:layout_width="96dp"
android:layout_height="96dp"
android:src="@drawable/timg"
app:civ_border_width="2dp"
app:civ_border_color="#FF000000"/>
①添加依赖Gradle Scripts->build.gradle->dependencies
===》implementation ‘com.github.RelinRan:CircleProgressView:2022.7.28.1’
②在布局文件中引入代码:
<androidx.widget.CircleProgressView
android:id="@+id/iv_correct_img2"
android:layout_width="@dimen/dp_30"
android:layout_height="@dimen/dp_30"
app:max="100"
app:progress="76"
app:progressColor="#36E5CA"
app:progressStrokeWidth="2dp"
app:progressStartAngle="0"
app:progressTextVisibility="invisible"
app:strokeCapRound="true" />
解释:其原因是由于Activity/Fragment 已经 destroy,而程序代码中依然在使用 Glide 加载图片导致的。详情解析
①在build(app)文件中引入依赖。
implementation 'com.airbnb.android:lottie:$lottieVersion'
②将相关的json文件和图片放入项目中的assets文件夹中。
③在布局文件中使用该布局
lottie_imageAssetsFolder 属性对应相关的图片;
lottie_autoPlay属性对应自动播放;
lottie_loop属性对应循环播放;
lottie_fileName属性对应相关的文件名。
<com.airbnb.lottie.LottieAnimationView
android:id="@+id/iv_star_anim"
android:visibility="gone"
android:layout_width="@dimen/dp_110"
android:layout_height="110dp"
android:layout_marginTop="-16dp"
android:layout_marginStart="-10dp"
app:lottie_autoPlay="true"
app:lottie_fileName="gifData.json"
app:lottie_imageAssetsFolder="images/"
app:lottie_loop="true"/>
错误详情:Android Failure [INSTALL_FAILED_VERSION_DOWNGRADE]
在安装APK的过程中使用比以前低的VersionName(版本),因为现安装的版本低于你机器版本,所以会出现会导致无法直接安装更新APK,在AS运行编译可直接跑真机,但打包的APK不行。因此可以卸载后重装,或者是更改更高一个的版本号后重新打包APK安装。
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。