一些遇到的错误的整理

来源:互联网 发布:漱口水品牌 知乎 编辑:程序博客网 时间:2024/05/20 23:20
1.直接闪退,报类型转换错误,检查很多遍,无果,最后发现,是因为采用了多个布局适配,也就是layout-sw600dp和layout文件夹下有一个相同命名的布局文件,后来因为需求变化,更改了其中一个布局文件的控件类型,另一个忘了改,编译没有报错,运行时报错2.startActivity启动一个新Activity后onActivityResult不被调用,但是有时候又会被调用,找了很久,发现是因为使用了TabHostActivity,TabHostActivity子activity,有时候就不会调用一些生命周期,后来子activity中使用
getParent().startActivityForResult(new Intent(this,要跳转的Activity.class), 请求码)
然后TabHostActivity中的onActivityResult去调用当前子activity的onActivityResult方法,就可以实现了,
Activity currentActivity = getCurrentActivity();        if (currentActivity instanceof TestActivity) {            ((TestActivity) currentActivity).onActivityResultL(requestCode,                    resultCode, data);        }
    最后补充一点,还是不要使用TabHostActivity了,这个方法已经被google标注为过时了,会有各种小问题的,我遇到的应该就是其中的某一个问题。推荐使用FragmentActivity去加载多个fragment3.TabActivity弹出窗口后返回,子activity中的EditText只能输入,不能删除(退格)了,找了很久,在TabActivity中的dispatchKeyEvent方法中打印捕捉到的key的值,发现是可以的,但是子activity就捕捉不到,说明tabActivity抢占了子activity的焦点,怎么办呢,还是2的办法,调用一下子类的同样的方法,
if(event.getAction() == KeyEvent.ACTION_DOWN && event.getKeyCode() == KeyEvent.KEYCODE_BACK){            return true;        }        Activity currentActivity = getCurrentActivity();        if (currentActivity instanceof TestActivity) {            return ((TestActivity) currentActivity).dispatchKeyEvent(event);        }else if(currentActivity instanceof ParameterSettingActivity){            return ((ParameterSettingActivity) currentActivity).dispatchKeyEvent(event);        }else if(currentActivity instanceof ScalingActivity){            return ((ScalingActivity) currentActivity).dispatchKeyEvent(event);        }else if(currentActivity instanceof QualityControlActivity){            return ((QualityControlActivity) currentActivity).dispatchKeyEvent(event);        }        return super.dispatchKeyEvent(event);
这样,就解决了,再次强调一下,不要用打了弃用符号的方法,会有各种问题的,我这个是项目完结了,改起来比较麻烦,就这么修复bug了4.使用开源项目EventBus报错No subscribers registered for event class java.lang.Integer,说我没有参数为Integer类型的方法。错误原因:我使用的是onEventMainThread(int value);解决办法:改为onEventMainThread(Integer value);

将.9图片放入到android studio会报错,错误原因有两个,1.是直接从外部复制,粘贴到android studio中的,我打开实际的文件夹,是没有这个文件的,2.android studio不支持.9.png或.9.jpg的写法,直接写.png不要带.9会自动识别

activity加载v4包中的fragment会报错,不要基层activty,继承FragmentActivity就可以了,原因: 编译系统会把<fragment>认为是app包中的Fragment来处理。但是此时我们导入的是v4包中的Fragment,所以会报错

使用BitmapFactory.decodeResource(getResources(), 资源ID)的时候,得到的确是一个空的BitMap,因为我加载的是xml格式的shape图片,该方法不支持

在fragment中得到布局的宽高,返回的确是0,甚至在onResume中也是得到的为0,最后找到一个办法,在Activity的onWindowFocusChanged(boolean hasFocus)中调用fragment中的方法来得到布局宽高信息,http://blog.csdn.net/pi9nc/article/details/9237031可以知道onWindowFocusChanged的作用,这里不作多解释

使用FragmentStatePagerAdapter后,默认的只能缓存三个页面,我要缓存多个页面,fragmentPager.setOffscreenPageLimit(XXXX);在绑定adapter时设置缓存的页面个数。

读写sd卡的时候不成功,权限也加了,就是没有效果,最后才发现自己把androidManifest中的权限代码小写了,小写了无效。

Layout.getDesiredWidth(“字”,画笔),自定义View中常用的,得到字所占的x轴的像素 ,浮点数,可以通过FloatMath.ceil()方法向上取整,如果画笔强转textPaint画笔失败的话,可以用另外一个办法 float textWidth = paint.measureText(“-“);

关于adapter.notifyDataSetChanged();界面不刷新的问题,首先,我先打印log,确定这个方法被调用了,其次,打印list的长度,发现list数据是有改变的,最后原因是因为我的mlist=xxx.get();拿过来的,而xxx.get()方法中每次都会new一个list返回给我的mlist,而界面绑定的mlist实际上是第一个list,第一个list只不过是mlist的一个引用,当mlist指向下一个list的时候,虽然mList的数据已经改变了,但是界面绑定的还是mlist引用的第一个list,所以就认为值没有发生改变,所以界面也没变,可以使用方法
list.clear();
list.addAll(DataSupport.where(whereValue).find(ReportBean.class));
这样界面就会跟着改变了
在dialogFragment的根布局中设置背景图片是圆角的,但是显示上就是有角,问题原因
这里写图片描述
子啊onCrate中替换了style,而style指向的style中设置了背景图片,所以不管怎么改都改不了
这里写图片描述

关于android studio中修改应用版本号喝版本名称后无效的问题,坑爹的studio,竟然把版本号和版本名称改到build.gradle中了,知道真相的我顿时泪奔,你说你改了位置,到是可以兼容一下前面的啊,不兼容的话,你到时删掉啊,容易误导,排错好耗时的
这里写图片描述

WARNING: linker: app_ process has text relocations. This is wasting memory and is a security risk. Please fix.

Failure [INSTALL_FAILED_OLDER_SDK]
大概意思是说什么代码中有文本重定位,这是一种浪费内存的行为,请更正,看到这篇http://stackoverflow.com/questions/26572199/warning-linker-app-process-has-text-relocations-this-is-wasting-memory-and-is,我将我的minSdkVersion改到更低一点,错误就消失了

重写父类View的成员函数onKeyPreIme来处理一个键盘事件的时候,如果不希望这个键盘事件分发给输入法处理,那么就返回一个true值,否则的话,就返回一个false值。

使用android studio1.3.1编写dataBinding数据绑定的时候,使用的是classpath “com.android.databinding:dataBinder:1.0-rc1”,出现错误Error:Failed to resolve: com.android.databinding:library:1.0-rc1
Open File
Show in Project Structure dialog
Error:Failed to resolve: com.android.databinding:adapters:1.0-rc1
Open File
Show in Project Structure dialog
这里写图片描述
解决办法:更新SDK的Extras下的Android Support Repository和Android Support Library包,更新后就可以在sdk/extras/android/m2repository/com/android/databinding的文件夹中的adapter和library文件夹中发现1.0-rc1的身影了

android stuido使用远程依赖时,一直停留在下载的解决办法
在gradle里最外层加上

allprojects {      repositories {          mavenCentral()      }  }  

就是设置一下远程仓库使用mavenCentral…然后Sync project with gradle files一下,就开始下载了,Btw,mavenCentral不需要翻墙。如果jar包在别的仓库,比如jcenter,那就在里面再加个jcenter()就OK啦。

附下载下来的jar包位置,如foldable-layout-1.0.1-sources.jar:

C:\Users\用户.gradle\caches\modules-2\files-2.1\com.alexvasilkov\foldable-layout\1.0.1\59a9dd35f8d31de01991ee56b741e9e992914895\foldable-layout-1.0.1-sources.jar
这个博客里看到的

提问过windous10打不出字,通过安装第三方输入法和所有有关切换的快捷键都没用,现在找到了解决方法
win键+x,打开命令提示符,输入ctfmin,回车

0 0