解决问题记录


鸿洋大神: 选择做正确的一件事,并且坚持下去。


本周待解决问题:
1.retrofict框架,Demo
2.indacator原理
3.汽车之家中的车型比对, 其中已加入参与比对的车型还有似乎***多余的车型加入比对***的***选择界面***就是为了整理列向的数据而存在的.不然很难实现,很难直接实现从选中车型到pk界面的在listView中一列一列的填充数据.( 为了能直接实现,需要将整个布局转过来,直接将列作为横向ListView的item而存在,这样方便数据的增删,而不用将javabean中的横向填充的数据转到列的方向上来填充) 加油~~~~ (10.13)
4.FramLayout中,即便Button定义在前面,TextView定义在后面,但是Button还是会压住TextView.谁能告诉我为什么?
博客预告:
1.EventBus3.0的使用,一处发送多处接收(普通的post发送消息和postSticky发送消息的区别.)(10.19) (10.26写毕)
2.高德sdk 地图展示在项目中地图无法初始化的问题. ,与arm版本有关系 (10.27)

注意的问题:
1.在xml文件中更改了布局后,有时只有clean project 之后再运行,才能出现新添加的布局LinearLayout 是咋回事? 待捣鼓清楚
2.从下方弹出的popWindow中的Edit唤醒的软件盘要把popWindow往上顶. 设置的正确方式:
//设置不被软键盘遮挡
popupWindow.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
//PopupWindow.INPUT_METHOD_NEEDED ()里写成这样只会把EditText顶出去.下面的button还是会被软键盘覆盖~
3.改变EditText的光标颜色,使用color不起作用时,直接用图片替代可以解决~android:textCursorDrawable="@drawable/shape_edittext_cursor"
4.(已解决)
ScrollView中有动态加载数据的ListView和GridView时.进入时会看到的不是头部.解决方法是:
将所有的其他要花费时间填充数据的部分都设置为不能获取到焦点.在setAdapter之前设置
listView.setFocued(false);
参考博客: https://segmentfault.com/q/1010000003101283

5.(已解决)
自定义ProgressBar的animation_list导致的图片变形问题 通过更改animation_list中的item可以解决:
例如:

<animation-list android:oneshot="false"
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:duration="150" android:drawable="@drawable/loading_01" />	
<item android:duration="150" android:drawable="@drawable/loading_02" />	
<item android:duration="150" android:drawable="@drawable/loading_03" />	
<item android:duration="150" android:drawable="@drawable/loading_04" />	
<item android:duration="150" android:drawable="@drawable/loading_05" />	
<item android:duration="150" android:drawable="@drawable/loading_06" />	
<item android:duration="150" android:drawable="@drawable/loading_07" />
</animation-list>
更改为:
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"    android:variablePadding = "true">	
<item android:duration="150">	    
<clip xmlns:android="http://schemas.android.com/apk/res/android"	        android:clipOrientation="horizontal"	        android:drawable="@drawable/loading_01"	        
android:gravity="left">	    
</clip>	</item>	
<item android:duration="150">	    
<clip xmlns:android="http://schemas.android.com/apk/res/android"	        android:clipOrientation="horizontal"	        android:drawable="@drawable/loading_02"	        
android:gravity="left">	    
</clip>	
</item>
</animation-list>

别问我为什么解决了,我也不知道~~~
参考博客地址: http://www.th7.cn/Program/Android/201505/449107.shtml
然后发现:上面的对API版本还是有限制。最后使用下面的解决方案
解决方案:
最后参考了自定义的View加上dialog来适配机型~

6.关于华为机型在 调用拨号界面拨打电话ACTION_DIAL时 (此时不用申请权限),会将带有分机号的400电话的分机号截断掉,无法自动拨打分机号。
解决方案:
需要采用dialog提示的方式,调用直接拨打电话的Intent ACTION_CALL来处理。 (需要申请权限,会涉及android 6.0以上的权限管理问题) 能处理好华为机型上面分机号被截取的问题 (17.1.10)

7.关于LinearLayout 布局只对 OnTouch监听响应 ACTION_DOWN 事件。不响应ACTION_MOVE 和ACTION_UP 事件
解决方案 :
在xml中 给 LinearLayout 将onLongClickable属性设置为true 。 将 OnToucch 的返回值设置为 true 为false好像也没什么影响,没看出来~ (解决) 170112

8.华为荣耀6 4.4.2 红米手机4.4.4打开应用闪退,爆java.lang.NoClassDefFoundError: org.xutils.common.task.TaskControllerImpl,定位在application的xutils3的初始化上面,其他5.0+的手机打开正常,请问有人遇到嘛
xutils3初始化语句 x.Ext.init(this);

解决:
原因:碰上65535问题之后,解决分包问题之后,导致的。
解决方案:这个问题解决了,我产生此问题的原型是由于在android stuido 中进行了分包的处理,分包处理后把项目application继承的父类改为MultiDexApplication 即可。
参看:安卓xutil3初始化错误 http://ask.csdn.net/questions/261912

9.Android如何让软键盘出现和消失
在程序中加入以下代码时,软键盘会出现:

InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
imm.toggleSoftInput(0, InputMethodManager.RESULT_SHOWN);
如果要让软键盘消失,则为以下代码:

InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);

imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
经验证有效(20170227)
软键盘的显示和隐藏
终极解决方案 http://blog.csdn.net/ccpat/article/details/46717573

10.仪器引导页在华为机型,魅族(含有虚拟按键的)上和普通的小米,三星手机上。全屏的引导页图片被压缩的问题。 在往ViewPager中填充图片时。需要将图片填充方式设置为setImageResource(),并通过设置填充方式进行裁剪处理~

      imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
      imageView.setImageResource(imgIdArray[position]);
//    imageView.setBackgroundResource(imgIdArray[position]);   //存在图片被在有虚拟按键的机型上图片被挤压变形的问题 
                       (解决 2070308)

11 . 各类型的AlertDialog
//显示自定义的Dialog
new AlertDialog.Builder(CourseSignupActivity.this).setTitle(“复选框”).setMultiChoiceItems(
new String[] { “Item1”, “Item2”,“Item3”,“Item4”,“Item5”,“Item6”,
“Item7”,“Item8”,“Item1”, “Item2”,“Item3”,“Item4”,“Item5”,“Item6”,“Item7”,“Item8” }, null, null)
.setPositiveButton(“确定”, null)
.show();

  1. 从gitHub上下载的项目 修改相应文件 快速编译
    参考: http://blog.csdn.net/zhouhui520w/article/details/52278814

原因: 下载的项目和你当前已经下载的grandle 不一致, 导致导入的时候到网上下载相应的版本。
解决办法:
1.翻墙下载,网速好的公司可以考虑。(毕竟原版的出问题的情况少)
2.修改需要导入的项目的配置

  1. xxx-project/.idea/gradle.xml 中的
  2. xxx-project/gradle/warpper/gradle-wrapper.properties 中的 distributionUrl=https://services.gradle.org/distributions/gradle-2.10-all.zip
    3.xxx-project/build.gradle 中的 classpath ‘com.android.tools.build:gradle:2.1.0’

13.要让ScrollView/或NetsedScrollView内部元素的 match_parent起作用必须设置android:fillViewport=“true”

14 CoordinatorLayout 中的Viewpager要触发 appBarLayout中的子布局跟随滚动. 将Viewpager添加到NetsedScrollView中,添加 android:fillViewport="true" app:layout_behavior="@string/appbar_scrolling_view_behavior 其中appBarLayout的滚动的布局要添加 app:layout_scrollFlags="scroll|enterAlways"
15 微信支付 加入加密时 确保待加密码 不要有前后误带的空格 ,千万注意 被这玩意卡了一天
16 android 适配 dp适配
https://www.jianshu.com/p/1302ad5a4b04
17 setTextSize的使用单位
https://www.jianshu.com/p/7f2941dbfb17
示例:
viewHolder.nameTextView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 15);
18. 解决Android Studio编译后安装apk报错:Error while Installing APK
参照:
https://blog.csdn.net/qq_36525622/article/details/78996791
19.在约束布局中使用include标签报错
解决方案:给include布局设置宽高
参考:https://blog.csdn.net/Ein3614/article/details/81210399

20.VIVO神机无法用Android studio真机调试
解决方案:
1.设置你的AS,关闭Instant Run。File->Settings->BUild,Execution…->Instant Run , 关闭勾选Enable Instant Run…
2.在你的gradle.properties文件添加一句:android.injected.testOnly = false
参考:https://blog.csdn.net/qq895767507/article/details/80271933
21.greenDao 混淆配置

#greendao3.2.0,此是针对3.2.0,如果是之前的,可能需要更换下包名
-keep class org.greenrobot.greendao.**{*;}
-keepclassmembers class * extends org.greenrobot.greendao.AbstractDao {
public static java.lang.String TABLENAME;
}
-keep class **$Properties

22.webview加载富文本设置背景色及文字颜色(有透明属性)

holder.tvContent.setBackgroundColor(Color.parseColor("#00000000")); // 设置背景色
        String CSS_STYLE = "<style>* {font-size:11px;}p {color:rgba(255,255,255,0.48);}</style>";
        holder.tvContent.loadDataWithBaseURL(null, CSS_STYLE + mData.get(position).getAnswer(),
                "text/html", "UTF-8", null);

23.wifi连接 无密码wifi时 在设置wificonfig时注释掉 下面两句
具体参见博客:
https://blog.csdn.net/akebrt/article/details/80584965

config.wepKeys[0] = "";
config.wepTxKeyIndex = 0;`

24.极光推送 Jpush设置别名错误 6012
在stopPush()//暂停推送之后
ResumePush()//恢复推送
要在setALias()//设置别名之前执行 才能设置别名成功
否者报6102错误

PushInterface.resumePush(mContext.get().getApplicationContext());//恢复推送
JPushInterface.setAliasAndTags(mContext.get().getApplicationContext(), (String) msg.obj, null, mContext.get().getAliasCallback());
  1. IOException: Canceled
    参考:https://blog.csdn.net/cjh_android/article/details/62892558

应该说这是我第一次遇到这个Exception:

具体情形
在 logout 的Activity中,为了更好的用户体验,在用户点击退出后,该 LogoutActivity 就直接 finish 了,不去鉴别是否登出成功。

由于一系列的需求问题,那么这个逻辑需要有所改动,在改动过程中发现,这个接口的回调都函数都没有被调用。

一步一步的跟着代码走发现,最中在 拦截器 中,这个请求是发出了异常:IOException: Canceled。

原因
在最后分析发现了原因:为了节约内存的使用,在每个Activity 的中,都有一个请求的队列,在发出请求的同时将请求加入到队列中,在 onDestroy 的方法里面,都 unsubscribe 了整个请求的队列,那么原因就很清晰了,这个请求被 cancel 掉了。

总结
不能说之前的代码是错误的,只是每个新的迭代都会有新的需求,仔细仔细再仔细。
26.base64串和bitmap互转

/**
	 * bitmap转为base64
	 * @param bitmap
	 * @return
	 */
	public static String bitmapToBase64(Bitmap bitmap) {

		String result = null;
		ByteArrayOutputStream baos = null;
		try {
			if (bitmap != null) {
				baos = new ByteArrayOutputStream();
				bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);

				baos.flush();
				baos.close();

				byte[] bitmapBytes = baos.toByteArray();
				result = Base64.encodeToString(bitmapBytes, Base64.DEFAULT);
			}
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				if (baos != null) {
					baos.flush();
					baos.close();
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return result;
	}

	/**
	 * base64转为bitmap
	 * @param base64Data
	 * @return
	 */
	public static Bitmap base64ToBitmap(String base64Data) {
		byte[] bytes = Base64.decode(base64Data, Base64.DEFAULT);
		return BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
	}
--------------------- 
PS:  很多直接传过来的base串包含了 解析头,要将解析头去掉才能转换成功
final String pureBase64Encoded = base64Data.substring(base64Data.indexOf(",") + 1);
原文:https://blog.csdn.net/chunlongyuan/article/details/7696070 

27.问题:网易云信的自定义消息 传的字段不能太长,
例如:千万不能传入base64串 用于获取icon 这样会直接导致消息 无法发送成功

28.Android 重启ADB ;

在Terminal 界面 输入 :adb kill-server

press enter

and again input: adb start-server

press enter

the adb will restart

29.Error:(65) Error parsing XML: not well-formed (invalid token)
错误原因:build.xml文件中android:text="<<返回",解析不了
改成@String/back 引用
类似错误:
在这里插入图片描述
相关解决方案:

<string name="back"><![CDATA[<<返回]]></string>

30.Android-使用 SetColorFilter 神奇地改变图片的颜色

imageView.setColorFilter(getResourec().getColor(R.color.XXXX));

参照解说博客:
https://blog.csdn.net/qq_32452623/article/details/79878132

31.Barrier

假设有3个控件ABC,C在AB的右边,但是AB的宽是不固定的,这个时候C无论约束在A的右边或者B的右边都不对。当出现这种情况可以用Barrier来解决。Barrier可以在多个控件的一侧建立一个屏障,如下所示:
这个时候C只要约束在Barrier的右边就可以了,代码如下:

<TextView
        android:id="@+id/TextView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <TextView
        android:id="@+id/TextView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintTop_toBottomOf="@+id/TextView1" />

    <android.support.constraint.Barrier
        android:id="@+id/barrier"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:barrierDirection="right"
        app:constraint_referenced_ids="TextView1,TextView2" />

    <TextView
        android:id="@+id/TextView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintLeft_toRightOf="@+id/barrier" />

复制代码app:barrierDirection为屏障所在的位置,可设置的值有:bottom、end、left、right、start、top
app:constraint_referenced_ids为屏障引用的控件,可设置多个(用“,”隔开)
参考文章链接:https://juejin.im/post/5bac92f2f265da0aba70c1bf
32.mac 版本Android studio设置 本地gralde

解决方法:把gradle下载到本地,然后将distributionUrl配置为本地路径。例如我下载的gradle压缩包放置位置如下
distributionUrl=file:/Users/guangrong/AndroidStudioProjects/gradle/gradle-3.3-all.zip,这样就可以马上去读到gradle包数据然后构建项目。

没必要动其他的设置,其他设置都可以使用默认的。
原文链接:https://blog.csdn.net/jamesshaoya/article/details/73412981

33.Android 6.0及以上版本,wifiManager.getScanResults()获取数据为空的最直接原因,及解决方法

在网上所有了此问题,提示一致都是需要加入获取位置的权限(android.permission.ACCESS_FINE_LOCATION),这是6.0系统后加入的梗。
但由于本人有点傻,加了权限后仍旧不行,经过一轮失败后,原来是手机的“位置信息”权限并未打开。
直接解决问题的步骤:
1.加入权限:< uses-permission android:name=”android.permission.ACCESS_FINE_LOCATION” />
2.将软件权限中的读取位置信息的权限打开(或动态添加权限,链接:https://blog.csdn.net/qq_37069563/article/details/80264609)
————————————————
原文链接:https://blog.csdn.net/dianzi314779725/article/details/81624884

34.对于ItemDercation变动的RecyclerView 在添加新的ItemDercation布局之前需要先移除旧的.否则会导致重复叠加效果

           

 if (itemDecoration != null) {   rcv_leader_style?.removeItemDecoration(itemDecoration)//移除旧的item间距     
            }
            itemDecoration = GridSpacingItemDecoration(spanCount, spacing, defaultSpecing, includeEdgeL)
            rcv_leader_style?.addItemDecoration(itemDecoration)//添加新的Item间距

35.Android Studio 配置代理后 手动清除代理配置:
1.

//    Fragment必须有一个无参public的构造函数,否则在数据恢复的时候,会crash报错:
//    Could not find Fragment constructor
//    如果为所有字段赋予默认值 - 空构造函数由Kotlin自动生成,否者需要手动添加空参构造函数
//    解决办法参照: https://www.jianshu.com/p/8df58655bfe3
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值