【Android】我遇到的bug

1、PopupWindow出现Unable to add window – token null is not valid; is your activity running?
参考1
PopupWindow出现android.view.WindowManager$BadTokenException: Unable to add window – token null is not valid; is your activity running?的异常是因为PopupWindow需要依附在一个创建好的Activity上,那么出现这个异常就说明此时你的Activity还没有创建好,出现这种情况,很可能是在onCreate()或者是onStart()中调用导致的。

2、Android error: failed linking file resources
(1)检查一下自己的XML文件中是不是有问题,十有八九是xml的问题。
一般xml文件名不会变红,要手动点开最近修改的xml文件检查是否有红色报错。

(2)十有一二是版本问题:如果遇到了下面的内容error: resource android:attr/dialogCornerRadius not found.说明可能是版本问题,
参考1:https://blog.csdn.net/qq_35366269/article/details/89239440
参考2:https://blog.csdn.net/weixin_43465451/article/details/83185112
参考1中的说法是:将当前项目中的build.gradle文件中的targetSdkVersion和compileSdkVersion 的版本改为28:
在这里插入图片描述

3、Android Studio提示Failed to resolve: com.android.support.constraint:constraint-layout:1.0.2
参考:https://blog.csdn.net/qq_36317441/article/details/77451570

//    compile 'com.android.support.constraint:constraint-layout:1.0.1'
修改为:
    implementation "com.android.support.constraint:constraint-layout:1.1.3"

4、
报错信息:

Failed to parse XML in E:\AndroidStudio_Projects\Project5Filed\Field_2019\app\src\main\AndroidManifest.xml
ParseError at [row,col]:[24,5]
Message: expected start or end tag
Affected Modules: app

解决方法:
修改注释方式:

<!--    //鉴权所需该权限获取进程列表-->

5、错误: 程序包okhttp3不存在

解决方法:
修改app目录下的build.gradle文件中dependencies里面添加下面一句代码,导入这个库就好了

compile 'com.squareup.okhttp3:okhttp:3.4.1'

6、canvas.save(Canvas.ALL_SAVE_FLAG)参数数量不对
解决方法:

canvas.save(Canvas.ALL_SAVE_FLAG); 
改为:
canvas.save();

7、fragment 中import androidx.fragment.app.Fragment 和import android.app.Fragment无法相互转换
解决方法:

Android studio 中使用androidx.fragment.app.Fragment实现界面切换,可能会遇到这个问题:

由于将Android studio 版本从2.3版本更新到了3.5版本所以在使用android.support.v4.app.Fragment实现布局切换出现了一些问题,比如说无法导入v4包中的Fragment等问题.
下面我给大家分享一下我自己使用androidx.fragment.app.Fragment实现Fragment界面切换的列子
其实问题都处在使用 FragmentTransaction类进行Fragment页面加载的问题
在V4包中,加载每一个Fragment碎片布局使用的方法如下

首先创建一个fragmentManager对象:
private FragmentManager fragmentManager = null; 
this.fragmentManager = getFragmentManager();

然后利用fragmentManager对象创建一个FragmentTransaction对象:
FragmentTransaction transaction = this.fragmentManager.beginTransaction(); 

最后使用FragmentTransaction中的对象进行Fragment页面布局的加载。

在androidx支持的包中:直接创建FragmentTransaction对象即可,然后调用对象中的方法进行Fragment页面布局的加载

FragmentTransaction ft = getSupportFragmentManager().beginTransaction();

8、Location specified by ndk.dir (xxx) did not contain a valid NDK and and couldn’t be used

导致异常的原因有两个:
1:路径的格式不对(其实一开始就想到这个问题了,我是直接用NotePad++打开的导致没有错误提示)
2:要具体到ndk的版本

解决方法:
打开local.properties,删掉里面的ndk路径那一行即可

9、 java.lang.UnsatisfiedLinkError: No implementation found for int com.baidu.mapsdkplatform.comjni.tools.JNITools.initClass(java.lang.Object, int) (tried Java_com_baidu_mapsdkplatform_comjni_tools_JNITools_initClass and Java_com_baidu_mapsdkplatform_comjni_tools_JNITools_initClass__Ljava_lang_Object_2I)

这是百度地图的问题,去官网下载了最新版本的so库和jar包,so库放到jniLibs文件夹中,jar包放到libs文件夹中,运行即可。

10、

java.lang.RuntimeException: Unable to start activity ComponentInfo
{
    
    com.ding.admin.newfieldtest/com.ding.admin.newfieldtest.MainActivity}: 
android.view.InflateException: 
Binary XML file line #2: 
Binary XML file line #2: Error inflating class androidx.constraintlayout.ConstraintLayout

把androidx.constraintlayout.ConstraintLayout换成LinearLayout就行了

11、

Caused by: android.view.InflateException: Binary XML file line #16: Binary XML file line #16: Error inflating class androidx.core.view.ViewPager
Caused by: android.view.InflateException: Binary XML file line #16: Error inflating class androidx.core.view.ViewPager
Caused by: java.lang.ClassNotFoundException: Didn't find class "androidx.core.view.ViewPager" on path: DexPathList[[zip file "/data/app/com.ding.admin.newfieldtest-qqOV5pUaEJpTK0BXHHuxfw==/base.apk"],nativeLibraryDirectories=[/data/app/com.ding.admin.newfieldtest-qqOV5pUaEJpTK0BXHHuxfw==/lib/arm64, /data/app/com.ding.admin.newfieldtest-qqOV5pUaEJpTK0BXHHuxfw==/base.apk!/lib/arm64-v8a, /system/lib64, /vendor/lib64]]at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:125)

解决办法:

androidx.core.view.ViewPager
换成:
androidx.viewpager.widget.ViewPager

控件如下就不报错了:

<androidx.viewpager.widget.ViewPager
	    android:id="@+id/viewPager"
	    android:layout_width="match_parent"
	    android:layout_height="match_parent"
	    android:layout_alignParentTop="true"
	    android:layout_above="@id/viewGroup"
	    android:layout_marginBottom="10dp"
	    >

猜你喜欢

转载自blog.csdn.net/qq_30885821/article/details/109015898
今日推荐