Android中的常见FC及解决方式整理

来源:互联网 发布:门禁管理系统源码 编辑:程序博客网 时间:2024/06/05 22:51

出处:http://7990064.blog.51cto.com/7980064/1547216

http://www.cnblogs.com/tianjian/archive/2011/10/27/2226633.html


导致出现Force Close的原因有很多,常见的有比如空指针啦,类没有找到啦,资源没找到,就连Android API使用的顺序错误也可能导致(比如setContentView()之前进行了findViewById()操作)

如何避免弹出Force Close窗口 可以实现Thread.UncaughtExceptionHandler接口的uncaughtException方法 代码如下:

import java.lang.Thread.UncaughtExceptionHandler;import android.app.Application;public class MyApplication extends Application implements UncaughtExceptionHandler {@Overridepublic void onCreate() {  // TODO Auto-generated method stub  super.onCreate();}@Overridepublic void uncaughtException(Thread thread, Throwable ex) {  thread.setDefaultUncaughtExceptionHandler( this);  }}

再补充一句,想要哪个线程可以处理未捕获异常,thread.setDefaultUncaughtExceptionHandler( this); 这句代码都要在那个线程中执行一次

lang.ClassCastException:android.widget.Button cannot be cast to android.widget.ImageView

 

原因:

eclipse的ADT的bug

出现场景:

修改布局而较少修改代码

解决:

project->clean

 

2、导入开源项目库是,控制台提示错误:

[2014-08-1311:16:04 - EX10_使用ABS库实现Actionbar]Found 2 versions of android-support-v4.jar in the dependency list,

[2014-08-1311:16:04 - EX10_使用ABS库实现Actionbar]but not all the versions are identical (check is based on SHA-1 only at thistime).

[2014-08-1311:16:04 - EX10_使用ABS库实现Actionbar]All versions of the libraries must be the same at this time.

[2014-08-1311:16:04 - EX10_使用ABS库实现Actionbar]Versions found are:

[2014-08-1311:16:04 - EX10_使用ABS库实现Actionbar]Path: F:\Users\longleg\workspaceHomeWork3\EX10_使用ABS库实现Actionbar\libs\android-support-v4.jar

[2014-08-1311:16:04 - EX10_使用ABS库实现Actionbar]Length: 621451

[2014-08-1311:16:04 - EX10_使用ABS库实现Actionbar]SHA-1: 5896b0a4e377ac4242eb2bc785220c1c4fc052f4

[2014-08-1311:16:04 - EX10_使用ABS库实现Actionbar]Path: F:\Users\longleg\workspaceHomeWork3\lib_ABS\libs\android-support-v4.jar

[2014-08-1311:16:04 - EX10_使用ABS库实现Actionbar]Length: 271754

[2014-08-1311:16:04 - EX10_使用ABS库实现Actionbar]SHA-1: 53307dc2bd2b69fd5533458ee11885f55807de4b

[2014-08-1311:16:04 - EX10_使用ABS库实现Actionbar]Jar mismatch! Fix your dependencies

 

问题原因:

是由于android-supportV4包有多个版本,不同版本之间的代码不同

解决方法:

1) 使它们相同

2) 使库中的jar是最新版本,将项目中的supportV4删除

 

3、在Fragment中增加有参数的构造方法,出现编译错误提示

Multiplemarkers at this line

- Avoidnon-default constructors in fragments: use a default constructor plus

Fragment#setArguments(Bundle)instead

- Thisfragment should provide a default constructor (a public constructor with noarguments)

(com.example.ex_templete.BannerItemFragment)

 

 

4、在Fragment中无法联想出getChildFragmentManager()

原因:

supportV4包较旧,更新为较新版本

 

5[2014-08-2016:25:32 - Dex Loader] Unable to execute dex: Multiple dex files defineLcom/nostra13/universalimageloader/cache/disc/DiscCacheAware;

[2014-08-2016:25:32 - EX40_使用UIL] Conversion to Dalvik formatfailed: Unable to execute dex: Multiple dex files define Lcom/nostra13/universalimageloader/cache/disc/DiscCacheAware;

原因:

即引入了库,libs目录中同时也含有jar包

解决方法:

删除一个

 

6. 使用UIL遇到的问题

08-2008:30:04.873: E/AndroidRuntime(20641): Caused by:java.lang.IllegalStateException: ImageLoader must be init with configurationbefore using

 

7. android.content.res.Resources$NotFoundException:String resource ID #0x4c

 

8. java.lang.IllegalStateException:The content of the adapter has changed but ListView did not receive anotification. Make sure the content of your adapter is not modified from abackground thread, but only from the UI thread. [in ListView(2131230826, classandroid.widget.ListView) with Adapter(class org.jrtt.fragment.CategoryFragment$CategoryAdapter)]

 

9java.lang.IllegalStateException:The specified child already has a parent. You must call removeView() on thechild's parent first.

 

原因:

一个child控件只能有一个parent布局

解决:

先移除再添加

ViewGroupparent = (ViewGroup) layout.getParent();

parent.removeView(layout);

 

1008-2803:44:01.994: E/AndroidRuntime(5942): java.lang.IllegalStateException: Activityhas been destroyed

 

原因:Fragment每次添加都要重新创建,否则因为状态不同会导致问题

解决:add或replace之前,重新new xxxFragment()

 

11导入项目后运行失败,提示

[2014-08-26 14:09:31 - Dex Loader] Unable toexecute dex: java.nio.BufferOverflowException. Check the Eclipse log for stacktrace.

[2014-08-26 14:09:31 - segmentedradios] Conversionto Dalvik format failed: Unable to execute dex: java.nio.BufferOverflowException.Check the Eclipse log for stack trace.

 

原因:

开发项目的eclipse版本较低,导入后项目配置问题


0 0
原创粉丝点击