Android遇到的一些问题

【AS构建】

进入setting-plugins,取消红色插件选择,重启,再重新选择刚才的红色插件。详见 https://stackoverflow.com/questions/17710739/problems-found-loading-plugins-in-android-studio

  • 编译时一些资源文件上的错误没法打印log

待编辑...
在terminal中输入命令 gradlew processDebugManifest --debug 打开了gradle的debug信息打印,才发现到了具体错误信息。

  • 加载了module再进行gradle构建的时候报错“SSL peer shut down incorrectly”
    先确定,加载module之前是正常的,那么一定是加载的module有问题,仔细查看module和app之间的配置,保证repositories等正确,一般在build(project)中需要配置:
buildscript {
    ext.kotlin_version = '1.3.10'
    repositories {
        google()
        mavenCentral()
        maven { url 'https://maven.google.com' }
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.1'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

allprojects {
    repositories {
        google()
        mavenCentral()
        maven { url 'https://maven.google.com' }
        jcenter()
    }
}

相应的module中也尽量按这个去设置,包括适配版本这个也要和app的一致。
其他可能的原因:
1、不要用安全连接


搜狗截图20181125021621.png

2、需要FQ

【Git管理】

【界面UI相关】

  • You need to use a Theme.AppCompat theme (or descendant) with this activity

    详见 http://blog.csdn.net/lincyang/article/details/42673151 ,我的情况中改Activity没用,必须修改Theme

  • LinearLayout中动态添加Fragment不能填充整个Activity的问题

    http://blog.csdn.net/se_wangke/article/details/47439653 重写Fragment中onCreate方法

  • Design editor is unavailable until a successful build xml文件编辑时切换到视图界面不显示

    先查错,无错的话rebuild,再不行重启AS

  • 有layout文件,但是编码中无法通过id获取相关组件

    查错,rebuild试试

  • ListView添加header或者footer后,在header、footer与items之间出现分割线

    在ListView中设置android:divider="@null",在item布局中设置TextView为分割线,注意分割线设在底部

  • TextView设置单行后文字不显示

    设置单行不要使用singleLine="true",使用以下代码

android:lines="1"
android:maxEms="20"
android:ellipsize="end"
  • ScrollView里嵌套ListView,进入界面时会自动滚动到最下面

    在listView的父层加上 android:descendantFocusability="blocksDescendants" 即可,每次加载都会在scrollview顶部。
    或者,在ScrollView中的第一个子元素设置为获取光标,android:focusableInTouchMode=”true” android:focusable=”true”

  • ScrollView嵌套ListView只显示一行之计算的高度不正确

    详见 https://www.cnblogs.com/zmc/p/4013053.html http://www.jb51.net/article/37202.htm

  • 显示全屏与底部虚拟按键冲突

最外层的框架里添加 android:fitsSystemWindows="true"

  • Dialog弹出框设置宽度填满父类,网上有很多改参数的教程,几乎都一样,但都无法生效

在参数设置时,把背景重设就好 dialogWindow.setBackgroundDrawableResource(android.R.color.transparent);

  • 对button的背景设置为一张图片有时候会出现变形的情况,解决方法是把图片放在bitmap.xml里再引用
bitmap.xml
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"     
    android:src="@drawable/icon_filter_pressed" 
    android:gravity="center">
</bitmap>
  • 在attrs.xml中自定义的属性无法生效

引用属性时用 app:item_count="2"
在布局文件头部引入 xmlns:app="http://schemas.android.com/apk/res-auto"
这里的两个app可以必须相同,或者替换为其他的,比如xyz,要一起替换。

  • ConstraintLayout无法在可视界面中预览

查询AS是否下载了ConstraintLayout的支持。
Setting -> Android SDK -> SDK Tools 找到ConstraintLayout for Android等勾选下载

  • EditText设置光标在最后,大部分博文里都只提到了setSelection(getText().length()),然而项目中用这个方法总是没有效果,有博文提到在这之前还要设置singleLine,即setSingleLine(true)。然而对我来说都不起作用,并且考虑到我的需求是EditText一直保持光标在最后,决定整个自定义的EditText,网上找的代码亲测可用
public class MyEditText extends android.support.v7.widget.AppCompatEditText {
  
    public MyEditText(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);  
    }  
  
    public MyEditText(Context context, AttributeSet attrs) {  
        super(context, attrs);  
    }  
  
    public MyEditText(Context context) {  
        super(context);  
    }  
      
    @Override  
    protected void onSelectionChanged(int selStart, int selEnd) {  
        super.onSelectionChanged(selStart, selEnd);  
        //保证光标始终在最后面  
        if(selStart==selEnd){//防止不能多选  
            setSelection(getText().length());  
        }  
          
    }  
}  
  • 4.4系统TextView使用矢量图报错Caused by: android.content.res.Resources$NotFoundException: File res/drawable-xxhdpi-v4/arrow_right_white.xml from drawable resource ID
    主要是低版本TextView不兼容使用矢量图,需要把矢量图包裹在其他标签里:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/arrow_right_white" />
</selector>

但是到了这一步还不一定能完成,因为在最新版本中需要手动开启支持矢量图,在你的Application里添加这句:

    static {
        AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
    }
  • 使用Button时末尾总有个阴影线,在API11以上使用:
  style="?android:attr/borderlessButtonStyle"

或者干脆用TextView。

  • 在8.0系统中报错 Only fullscreen activities can request orientation
    在8.0系统中如果一个activity同时设置透明样式和固定方向就会报这个错,删掉一个就行,或者针对8.0进行适配https://blog.csdn.net/starry_eve/article/details/82777160

  • 使用AndroidX库,报错“android.support.annotation不存在”

在项目中使用了butterknife,也就是说butterknife中没有转Androidx;
问题解决很简单:升级butterknife到最新的版本(新版本已经兼容Androidx)就可以了。
此时我更新的版本是(butterknife:9.0.0-rc2)

【开发中】

  • 从Activity无法获取Fragment中的控件

    不能在onCreate函数中获取控件,因为fragment还没有start,你可以在onStart函数中获取。* Adapter.notifyDataSetChanged()时,ListView无法刷新数据 > 对于数据更新你不能直接用赋值=,因为这样会改变其内存地址,而notify...更新是对原内存地址上的数据更新,应该用ArrayList.clear(),再ArrayList.addAll()。详见 http://1028826685.iteye.com/blog/1663293* 无法读取xml文件夹下的资源文件 > 创建资源文件的时候要用右键-XML Resource File,这样的文件头里包含一下语句,否则直接创建xml文件没有该头,R读取时无法识别。```

  • 防止自动跳出输入法

    getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

  • ListView中CheckBox错位问题,详见:

    https://www.cnblogs.com/FightForFreedom/p/4656863.html

  • AndroidStudio运行DDMS,弹出错误框,查看错误日志后,发现“Unsupported major.minor version 52.0”

    应该是本地java版本比as版本低的关系,把本地java版本更新到1.8即可

  • 取消Activity标题栏

    if(isFullDisplay()) {
            Log.d(TAG, "isFull");
            requestWindowFeature(Window.FEATURE_NO_TITLE); //设置无标题
            getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);//取消状态栏
            //上两行代码无效时,手动隐藏标题栏
            if(getSupportActionBar() != null) {
                getSupportActionBar().hide();
            }
        }
        setContentView(getViewId());
  • 用gson.fromJson(),会强制把所有数字都转换为double,过长的还会按科学计数法格式化,解决如下:

    http://www.lidetao.com/java-gson-json2map-int2double.html

  • android崩溃后直接重启,导致捕捉不到异常信息

    在调试器里修改设置,把 Show only selected application 改为 No Filters,详见 https://www.zhihu.com/question/32024327

  • 按Alt+Enter自动import包时不成功,一直显示Studio is updating indices

    打开File->Invalidate Caches / Restart->Invalidate and Restart,详见 https://blog.csdn.net/andrio/article/details/80359455

  • 安装时报错 org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:transformClassesWithDexBuilderForDebug'.

    把原APK删掉重装就好

  • onActivityResult()不执行

1.你的Activity被finish()掉了,看看你的Activity有没有在哪里finish()掉。
2.startActivityForResult(intent, -1)函数,第二个参数小于0,应该要大于0
3.启动模式为android:launchMode=”singleTask”和android:launchMode=”singleInstance”都会导致无效,修改为默认的android:launchMode=”standard”
4.TabHost的子Activity中startActivityForResult调用其他Activity时候遭遇到onActivityResult方法不响应的问题...
5.Fragment里面调用startActivityForResult的时候...

  • 刚添加初始化Fragment,无法通过findFragmentByTag获取fragment

添加结束后再执行:mFragmentManager.executePendingTransactions();

  • 编译时报错“app:transformClassesAndResourcesWithProguardForRelease”,“java.io.IOException: Please correct the above warnings first.”

这里有一些解决方案,应该是一些包重复导致的混淆错误:app:transformClassesAndResourcesWithProguardForRelease
然而我遇到的情况是,混淆规则被注释掉了未加入,注意在release{}中加入“proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'”

  • 在引入第三方库,第一次打正式版包的时候如果报错 “app:transformClassesAndResourcesWithProguardForFlavor_releaseRelease”

注意是混淆问题,引入第三方库时没有写响应的混淆规则。需要修改proguard-rules.pro(app),常用的有:

#定位
 -keep class com.amap.api.location.**{*;}
 -keep class com.amap.api.fence.**{*;}
 -keep class com.autonavi.aps.amapapi.model.**{*;}

#3D地图 V5.0.0之后:
 -keep class com.amap.api.maps.**{*;}
 -keep class com.autonavi.**{*;}
 -keep class com.amap.api.trace.**{*;}

#greendao
-keep class org.greenrobot.greendao.**{*;}
-keepclassmembers class * extends org.greenrobot.greendao.AbstractDao {
    public static java.lang.String TABLENAME;
}
-keep class **$Properties

#eventbus
-keepattributes *Annotation*
-keepclassmembers class ** {
    @org.greenrobot.eventbus.Subscribe <methods>;
}
-keep enum org.greenrobot.eventbus.ThreadMode { *; }
# Only required if you use AsyncExecutor
-keepclassmembers class * extends org.greenrobot.eventbus.util.ThrowableFailureEvent {
    <init>(java.lang.Throwable);
}
  • 在编译的时候,当build.gradle文件有误时,在build栏只会简单报错,常见的报错如下
java.lang.RuntimeException: Manifest merger failed with multiple errors, see logs

然而什么地方see logs,却不得而知,这里要打开报错日志来看详细错误:
进入Terminal栏
Windonws输入命令行

gradlew processDebugManifest --stacktrace

Mac输入命令行

./gradlew processDebugManifest --stacktrace

即可查看详细错误,有时候Mac会遇到 Permission denied
那在输入上述命令行前,先获取权限,输入

chmod +x gradlew

再按上述操作即可。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,830评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,992评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,875评论 0 331
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,837评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,734评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,091评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,550评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,217评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,368评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,298评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,350评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,027评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,623评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,706评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,940评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,349评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,936评论 2 341

推荐阅读更多精彩内容