异常汇总

来源:互联网 发布:怎么查看淘宝销量 编辑:程序博客网 时间:2024/05/05 07:42

1.Caused by: android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?

Context中有一个startActivity方法,Activity继承自Context,重载了startActivity方法。如果使用Activity的startActivity方法,不会有任何限制,而如果使用Context的startActivity方法的话,就需要开启一个新的task,遇到上面那个异常的,都是因为使用了Context的startActivity方法。解决办法是,加一个flag。

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  

2.Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class com.sailang.toucnhdemo.MyLayout

这个异常指出了出错的位置,是在XML文件的第2行。一般遇到这种错误都是拼写错误,可能是你把包名写错了,要不就是大小写错误,你需要认真检查一下。

3.Activity has leaked window ******** was originally added here

这个会导致程序崩溃。

按字面了解,Window Leaked大概就是说一个窗体泄漏了,也就是我们常说的内存泄漏,为什么窗体会泄漏呢?

产生原因:
我们知道Android的每一个Activity都有个WindowManager窗体管理器,同样,构建在某个Activity之上的对话框、PopupWindow也有相应的WindowManager窗体管理器。因为对话框、PopupWindown不能脱离Activity而单独存在着,所以当某个Dialog或者某个PopupWindow正在显示的时候我们去finish()了承载该Dialog(或PopupWindow)的Activity时,就会抛Window Leaked异常了,因为这个Dialog(或PopupWindow)的WindowManager已经没有谁可以附属了,所以它的窗体管理器已经泄漏了。

android.view.Window Leaked一般会发生在Activity 与Dialog的显示。

Activity 中create 一个Dialog,若你先关闭Dialog再关闭Activity就是正常的,若你先关闭Activity再关闭Dialog就会报错这个android.view.WindowLeaked错误了。
分析这个原因是:Dialog是基于Activity而创建的:new ProgressDialog(this);this 就是Activity。 Activtity先finish,那Dialog就没得依附了,所以就会报android.view.WindowLeaked。

解决方法:
关闭(finish)某个Activity前或者在onDestroy()中,要确保附属在上面的Dialog或PopupWindow已经关闭(dismiss)了。
也可在OnCreateDialog()中创建Dialog,让系统去管理对话框。

4.java.lang.NullPointerException

 at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:355)

空指针错误,这种错误提示信息没有涉及自己的应用类。其实是,自己的应用采用了API级别比较高的功能,可是却在android低版本上运行,由于找不到,所以才会报空指针异常。

  setListAdapter(new ArrayAdapter<BookContent.Book>(getActivity(),
    android.R.layout.simple_list_item_activated_1,
    android.R.id.text1, BookContent.ITEMS));

如上面的代码:android.R.layout.simple_list_item_activated_1是API11提供的,如果你在API8上运行就会报错。

解决办法就是调用API8的就可以啦!

5. java.lang.ClassCastException: android.view.SurfaceView

有时候在写程序的时候就会遇到很诡异的错误,提示是类型装换错误,可是,我确定我没有弄错,但是,它就是报这个错,而且,会提示一行错误位置,可是这行和SurfaceView没关系,也没有转换错类型。真的很诡异。

大招来了:

这是你点击Project->clean

eclipse--->project----->clean... 选项
将工程中的.class文件删除,同时重新编译工程(Java文件),类似于jbuild中的rebuild。

6.java.lang.RuntimeException: setAudioSource failed.

解决方案:(来源于网络)

在实现钢琴软件的录音过程中,出现java.lang.RuntimeException: setAudioSource failed报错。

好多资料说需要在AndroidManifest.xml文件中增加如下配置以授予程序录制声音的权限:

<uses-permission
android:name="android.permission.RECORD_AUDIO">
</uses-permission>

添加之后,依旧出现如上报错,考虑到可能跟SDcard有关系,于是又增加了以下语句:

<uses-permission

android:name="android.permission.WRITE_EXTERNAL_STORAGE">

</uses-permission>

问题解决,可以实现正常录音。

 7.live555 demux connection timeout

live555 demux Failed to connect with rtsp://192.....

我们在使用VLC for android时,会遇到上面的错误,很是郁闷,就这一个问题,你能郁闷几小时,因为你都不懂什么是live555。

最后,偶然知道怎么回事了!

因为你没有在manifest中增加

    <uses-permission android:name="android.permission.INTERNET" >

其实,可以理解,因为你需要去访问rtsp地址,所以需要INTERNET权限。

 

 

原创粉丝点击