- 博客(64)
- 收藏
- 关注
原创 RecyclerView简单添加分割线
RecyclerView 并没有 divider 属性,但是我们可以通过 RecyclerView 的 addItemDecoration() 来添加分割线,该方法参数为 RecyclerView.ItemDecoration。当 RecyclerView 添加 ItemDecoration 后,RecyclerView 在绘制每个 item 的时候,会去绘制 decorator,也就是会调用 ItemDecoration 的 onDraw() 和 onDrawOver() 方法。RecyclerView.
2022-12-05 15:14:34
1821
原创 RecyclerView在ScrollView中完全展开
我们在开发过程经常会组合使用RecyclerView和ScrollView,但是它经常不兼容,后面发现只要给RecyclerView的外层加上一个RelativeLayout 就可以解决该问题。xml:Activity:至此,就可以实现想要的效果了。原文地址
2022-12-05 14:53:04
614
原创 onDestroy报空指针boolean androidx.fragment.app.FragmentManagerImpl.isDestroyed()‘ on a null object re...
原因:是因为自己在Fragment重点onDetach增加了如下代码,自己把它设为了空值导致的,新版本的Fragment不会再产生这个问题,可以直接把这部分代码去掉。原文地址
2022-12-05 14:47:18
557
原创 gradle 使用 exclude 解决jar包冲突
项目经常会引用第三用依赖库,比如主module有glide,引用的第三方库也引用glide,glide版本不一致,就容易冲突。1. 查看冲突的jar包;一眼能看出来的跳到第二步; 遇到隐藏比较深的就比较难受了,肉眼完全看不出来,此时打开AS的terminal控制台输入以下命令查看:gradlew -q app:dependencies 查看依赖树;比如: 报错信息:打开AS的terminal控制台输入:gradlew -q app:dependencies 右键find, 输入关键字dynami
2022-12-05 14:38:59
3381
1
原创 runOnUiThread()方法在线程中执行UI更新操作
如果你对于Android的Thread+Handler方式感觉繁琐,不妨试试Activity提供的另外一种简单的方法runOnUiThread,runOnUiThread可以帮助你在线程中执行UI更新操作,我们只需要在线程中写上类似的语句:这里需要注意的是runOnUiThread是Activity中的方法,在线程中我们需要告诉系统是哪个activity调用,所以前面显示的指明了activity。原文地址
2022-12-05 14:10:01
393
原创 HttpURLConnection中getInputStream()异常java.io.FileNotFoundException
在项目中遇到了一个HttpURLConnection网络请求报异常的问题 java.io.FileNotFoundException,后来通过debug定位到具体得问题出现在 urlConnection.getInputStream()上。HttpURLConnection POST请求时,当getResponseCode为HttpURLConnection.HTTP_OK(200)和HttpURLConnection.HTTP_CREATED(201)时正常连接,其他值时比如(403),httpURL
2022-12-05 11:57:52
2870
原创 java.lang.NumberFormatException: null的原因及解决方案
查找到了异常是出现在 paseInt() 方法中,在 String 类在转换成 Int 类时,
2022-11-21 11:20:22
7068
原创 SharedPreferences保存List<T>数据
Sharepreferences是使用键值对的方式来存储数据的,但是Sharepreferences并不支持支持存储List数据。
2022-11-21 09:47:53
730
转载 android studio 连接svn 提示e170013
接着会依次让你输入电脑用户和密码,及SVN账号密码,输完就解决了,就可以重新用AS连接SVN了。快捷键win+R,输入cmd,打开控制台,输入。(svn地址) ,回车,然后输入p即可。
2022-11-04 15:25:56
337
转载 androidStudio使用真机调试,点击Run总是会进Debug模式
有时候通过debug模式定位问题完后,发现不管怎么run,进入的都是debug模式,而且总是停留在启动页面,有时候能启动app,有时候不能启动app,重启手机、重启电脑、重启开发工具,依旧不管用。
2022-11-04 15:13:54
690
1
原创 WebView清除缓存
// // 启动应用缓存 ws.setAppCacheEnabled(false);// // 设置缓存模式 ws.setCacheMode(WebSettings.LOAD_NO_CACHE);原本设置这两个属性,每次加载H5页面都是新的,但是这两个属性对localstorage缓存无效。一种十分简单的方法,只需要在删除的时候调用即可:WebStorage.getInstance().deleteAllData();...
2022-01-22 11:38:08
14377
转载 判断List中是否含有某个实体bean
注意:使用List.contains(Object object)方法判断ArrayList是否包含一个元素对象(针对于对象的属性值相同,但对象地址不同的情况),如果没有重写List的元素对象Object中的equals方法,将导致contains方法始终返回false。 查看ArrayList的contains方法的源码如下:@Override public boolean contains(Object object) { Object[] a = array; int
2022-01-15 11:01:49
800
转载 友盟推送包名与ApplicationId不一致导致报错 RESCLASS未初始化
一. 问题背景这是在接入友盟6.1.0 push的SDK时候出现的错误。因之前的版本未出现,所以应该可以算作是版本更新后,需要对友盟push接入做新的适配。(不一定任何一个项目接入都会出现这个问题,要不然这就不算一个合格的SDK产品。)表现出来的结果是:推送数据到了,顶部栏的通知无法显示出来。2.问题解决问题是拿到的packageName不是真正的“packageName”。扩展:通过context.getPackageName()获取到的是ApplicationId。默认情况下A
2022-01-15 10:39:42
592
转载 Glide加载图片查看报错信息
Glide为我们提供了listener()方法,加上它就能看到报错信息了,查看log:package com.kite.imageloader;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.widget.ImageView;import android.widget.Toast;import com.bumpt
2022-01-15 10:26:09
798
转载 Bitmap 和 File 相互转换
图片文件转为Bitmap对象String filePath=”c:/01.jpg”;Bitmap bitmap=BitmapFactory.decodeFile(filePath);如果图片过大,可能导致Bitmap对象装不下图片解决办法:String filePath=”c:/01.jpg”;Bitmap bitmap=BitmapFactory.decodeFile(filePath,getBitmapOption(2)); //将图片的长和宽缩小味原来的1/2private
2022-01-15 10:23:19
6485
转载 Fragment中startActivityForResult没有执行回调
在ViewPager中的Fragment不执行回调,解决步骤:1.检查Fragment中的onActivityResult()方法中是否写了super.onActivityResult,切记这里千万不要手贱给删了。不然就像我懵逼了半个多小时。2.检查Fragment中的startActivityForResult的调用方式,不要getActivity().startActivityForResult(),因为这样会让回调回到Activity中。直接startActivityForResult() 或
2022-01-15 10:19:10
645
转载 viewpager+fragment实现沉浸式状态栏
MainActivity中使用ViewPager+Fragment的方式作为首页,但是每个fragment有独立的状态栏颜色,同时还要适配刘海屏,水滴屏。直接上代码:<!--给APP设置为无标题栏样式,在style下--><resources> <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="android:window
2022-01-14 17:26:32
1047
1
转载 拍照功能横竖屏处理方法
1)、设置Activity强制横屏,成像效果不错,所见即所拍,但是系统组件一样跟着横屏,比如菜单,图片预览对话框等。//横屏 //setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);2)、设置相机预览强制横屏,能解决竖屏变形问题,但是横屏又悲剧了。//设置相机强制横屏,防止预览变形 //mCamera.setDisplayOrientation(90);3)、吸收方法1)和2)的教训,我们来一个完全之策:设置Ac
2022-01-14 17:15:50
2695
转载 安卓中短信验证码倒计时的几种方式
发送短信验证码后,一般在界面上都会有一个倒计时的显示.在安卓中,实现类似的倒计时有多种方式,当然背后的基本原理都是设定一个初始值,然后每过一定的间隔时间执行操作.1.用安卓自带的CountDownTimer实现这是最简洁的实现方式.安卓提供了一个CountDownTimer类用于倒计时功能.其使用方法在注释里面写的已经比较清楚了.记时开启后禁掉控件的点击事件,倒计时结束后再开启.防止重复点击导致多个任务运行.private void countDownTime() { //用安卓自带的C
2022-01-14 17:06:17
1451
转载 yyyy年MM月dd日中提取出单独的年,月,日
public class DateDemo{ public static void main(String[] args){ String str = new java.text.SimpleDateFormat("yyyy年MM月dd日").format(new java.util.Date()); String yeah = str.substring(0,4); //取年 String yue = str.substring(str.index.
2022-01-14 16:31:05
1183
转载 android Studio keytool‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件
//android Studio keytool' 不是内部或外部命令,也不是可运行的程序 或批处理文件解决方法步骤:①找到Java安装路径下的keytool:②打开运行先转到你的keytool文件夹路径下,然后回车。再运行它(输入keytool.exe 快捷键是Tab建和Linux一样),然后在后边输入命令 -list -keystore 输上后后边跟的就是你的debug.keystore文件的对象路径。然后提示输入密库口令 输入android ,再回车就看见你的Sha1了。
2022-01-14 15:48:37
861
转载 解决Android Studio 每次修改后,都要删除build文件,然后rebuild project才生效
1、 打开配置:2、配置3、设置Run Gradle task输入insallDebug再编译运行即可
2022-01-14 15:42:17
2602
转载 Gson字符串转换对象数组
public class Input{ private String title; private int formId; private String content; public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public int get.
2022-01-14 15:39:44
2140
1
转载 double转整型
int n=3;我们用pow函数求出它的平方,此时数据类型为doubledouble s=Math.pow(n,2);我们要将其转化为整型数据,则应该如下操作int t=(new Double(s)).intValue();有时我们要求的数据范围比较大,int不能满足,则应该转化为long类型long x=(new Double(s)).longValue();...
2022-01-14 15:02:57
1796
转载 Java时间和时间戳的相互转换
时间转换为时间戳:/* * 将时间转换为时间戳 */ public static String dateToStamp(String s) throws ParseException{ String res; SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = simpleDateFo
2022-01-14 14:44:18
2295
转载 两个double类型比较大小
/** * @return >0,第一位数大 */ public static int compare(double double1, double double2) { BigDecimal data1 = new BigDecimal(double1); BigDecimal data2 = new BigDecimal(double2); return data1.compareTo(data2);}...
2022-01-14 14:30:20
651
转载 android开发中要注意的细节
时刻注意单一职责原则,一个类专心做好一件事情更为清晰。 异常抛出,在合适的位置处理或者集中处理,不要搞的到处是catch,混乱且性能低。 注释,尽量去写足够的注释,去描述一下思路,达到看了可以明白某一块代码的效果。 ...
2022-01-10 16:58:21
133
转载 Android设置点击物理返回键后应用后台运行而不是退出
@Override public void onBackPressed() {//重写的Activity返回 Intent intent = new Intent(); intent.setAction("android.intent.action.MAIN"); intent.addCategory("android.intent.category.HOME"); startActivity(intent);}原文.
2021-07-23 15:55:47
428
转载 Android拍照/裁剪 保存完图片,系统相册不显示问题解决。
public String save(Context context) { String fileName = "mosaic_"+System.currentTimeMillis()+".png"; File file = new File(FileUtils.getMosaicDir(),fileName); try { FileOutputStream outputStream = new FileOutputStream(fi.
2021-07-23 15:49:35
616
原创 Gradle各版本下载地址
https://downloads.gradle.org/distributions/gradle-2.5-all.zip自己修改url里面的版本号,复制到浏览器访问就可以下载了
2021-07-23 15:23:40
207
转载 Android 底部导航栏中间凸起、越界显示
1、只需在根节点设置Android:clipChildren为false即可,默认为true2、可以通过android:layout_gravity控制超出的部分如何显示。3、android:clipChildren的意思:是否限制子View在其范围内一:实现效果:二:关键原理:1、只需在根节点设置Android:clipChildren为false即可,默认为true2、可以通过android:layout_gravity控制超出的部分如何显示。3、android:cl.
2021-07-23 15:20:52
1729
转载 利用DB Link两步搞定Oracle两个数据库间的表数据同步
这个方法可以实现两个不同oracle版本的表同步,而且会比imp语句导dmp效率高。一、实现目标: 要实现从源表(AAA)到目标表(BBB)的数据同步。二、在目标机上建立Oracle DB Link:1、 在network/admin/tnsname.ora文件中加入源库的连接信息,如:AAA= (DESCRIPTION = (ADDRESS = (PROTOCOL
2017-10-24 20:04:07
3186
转载 利用PLSQL Developer 修改同步数据库间表结构
PLSQL Developer Tools 菜单下有Compare User Objects功能。1、Tools –> compare user objects 该功能用于比较不同用户所拥有的对象(包括table、sequence、function、procedure、view等),并生成同步差异的sql脚本,用户通过执行该脚本,可保持两个用户的对象结构的同步,当然你也可以选择一个对象或
2017-10-24 19:48:31
3954
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人