android 错误集合

1.IllegalStateException: Can not perform this action after onSaveInstanceState:
在使用Fragment的时候,经常使用commit()进行提交。如:

1
2
3
4
5
MapFragment mapFragment = new MapFragment();
FragmentTransaction ft = getFragmentManager()
.beginTransaction();
ft.add(R.id.detials, mapFragment);
ft.commit();

根据官方文档的解释,commit方法时在Activity的onSaveInstanceState()之后调用的,这样会出错,因为onSaveInstanceState方法是在该Activity即将被销毁前调用,

来保存Activity数据的,如果在保存玩状态后再给它添加Fragment就会出错。解决办法就是把

commit()方法替换成 commitAllowingStateLoss()就行了,其效果是一样的。

2.java.lang.RuntimeException—->All WebView methods must be called on the same thread
解决方法:

1
2
3
4
5
6
mWebView.post(new Runnable() {
@Override
public void run() {
mWebView.loadUrl(...).
}
});

3.androidmanifest.xml的文件下
报错为:Android google_play_services_version - No resource found

  • 解决方法
  1. 第一,到以下的地方Copy version.xml:
    C:\Documents and Settings\看你install在哪里\android-sdks\extras\google\google_play_services\libproject\google-play-services_lib\res\values\version.xml
    第二,paste在你的project里面
    你的project/res/values/version.xml

  2. 在项目的文件下直接在res/values/下,直接添加version.xml文件,并编写如下:

    1
    5089000

4. :Android java.lang.NullPointerException: println needs a message
修改:

1
2
String msg = (e.getMessage()==null)?"Login failed!":e.getMessage();
Log.i("Login Error1",msg);

5.: android.view.InflateException: Binary XML file line #2: Error inflating class android.support.v7.widget.Toolbar:
这个在android5.1的时候报错了,不知道为啥?
通过查阅,才知道的Theme设置错误了。
android 4.4 以下的版本可运行。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<style name="AppBaseTheme" parent="Theme.AppCompat.Light">
</style>
<style name="AppTheme" parent="AppBaseTheme">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/primary_material_light</item>
<item name="android:textColorPrimary">@android:color/white</item>
<!-- 解决activity切换时的黑屏问题 -->
<item name="android:windowIsTranslucent">true</item>
</style>
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
</style>
在androidmanifest.xml中引用为android:theme="@style/AppTheme.NoActionBar"

5.1就报错了:将AppBaseThemeparent改成Theme.AppCompat.Light.NoActionBar,并且引用为android:theme="@style/AppBaseTheme"才可以解决。

6.:【Android异常】The specified child already has a parent. You must call removeView() on the child's parent first.
解决方法:

View v = inflater.inflate(R.layout.preference_fragment, container, false);

原因在这里:关于异常“The specified child already has a parent. You must call removeView”的解决(举例说明,附源码)

7.:Error inflating class错误
亮点在评论,我是照着评论解决的。

我遇到的问题是 我只定义了(Context ctx)一个构造函数,然后出错。解决方法是加上另外两个构造函数(Context context, AttributeSet attrs, int defStyle),(Context context, AttributeSet attrs)

8.:消除Context为空的NullPointerException异常
这个错误很奇葩,Act_A->Act_B后,Act_B->Act_C,我不断地操作Act_B->Act_C,结果去报Act_A空指针的异常。

1
2
3
4
5
6
7
8
FATAL EXCEPTION: main
java.lang.NullPointerException
at android.content.ContextWrapper.getResources(ContextWrapper.java:89)
at android.view.ContextThemeWrapper.getResources(ContextThemeWrapper.java:78)
at android.content.Context.getText(Context.java:317)
at com.revenco.goldtrade.activity.MobileTraderWindow$1.handleMessage(MobileTraderWindow.java:128)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)

这个位置在Handler中,报的是getText为空,看源码知道getResource().getText(rsid),那么就是Context为空。
个人觉得解决方案
getApplicationContext().getResource().getText(rsid)来进行代替,因为getApplicationContext()是属于全局的,并不会由于没加载进来或者其他原因为空。但是不时才会有这个异常,难捕捉。

android.os.NetworkOnMainThreadException的解决方案

我的解决方案,我将HttpClient放在了Handler上执行才出现这个错误,只要放回Thread上执行就ok

9.

android 错误集合

1.IllegalStateException: Can not perform this action after onSaveInstanceState:
在使用Fragment的时候,经常使用commit()进行提交。如:

1
2
3
4
5
MapFragment mapFragment = new MapFragment();
FragmentTransaction ft = getFragmentManager()
.beginTransaction();
ft.add(R.id.detials, mapFragment);
ft.commit();

根据官方文档的解释,commit方法时在Activity的onSaveInstanceState()之后调用的,这样会出错,因为onSaveInstanceState方法是在该Activity即将被销毁前调用,

来保存Activity数据的,如果在保存玩状态后再给它添加Fragment就会出错。解决办法就是把

commit()方法替换成 commitAllowingStateLoss()就行了,其效果是一样的。

2.java.lang.RuntimeException—->All WebView methods must be called on the same thread
解决方法:

1
2
3
4
5
6
mWebView.post(new Runnable() {
@Override
public void run() {
mWebView.loadUrl(...).
}
});

3.androidmanifest.xml的文件下
报错为:Android google_play_services_version - No resource found

  • 解决方法
  1. 第一,到以下的地方Copy version.xml:
    C:\Documents and Settings\看你install在哪里\android-sdks\extras\google\google_play_services\libproject\google-play-services_lib\res\values\version.xml
    第二,paste在你的project里面
    你的project/res/values/version.xml

  2. 在项目的文件下直接在res/values/下,直接添加version.xml文件,并编写如下:

    1
    5089000

4. :Android java.lang.NullPointerException: println needs a message
修改:

1
2
String msg = (e.getMessage()==null)?"Login failed!":e.getMessage();
Log.i("Login Error1",msg);

5.: android.view.InflateException: Binary XML file line #2: Error inflating class android.support.v7.widget.Toolbar:
这个在android5.1的时候报错了,不知道为啥?
通过查阅,才知道的Theme设置错误了。
android 4.4 以下的版本可运行。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<style name="AppBaseTheme" parent="Theme.AppCompat.Light">
</style>
<style name="AppTheme" parent="AppBaseTheme">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/primary_material_light</item>
<item name="android:textColorPrimary">@android:color/white</item>
<!-- 解决activity切换时的黑屏问题 -->
<item name="android:windowIsTranslucent">true</item>
</style>
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
</style>
在androidmanifest.xml中引用为android:theme="@style/AppTheme.NoActionBar"

5.1就报错了:将AppBaseThemeparent改成Theme.AppCompat.Light.NoActionBar,并且引用为android:theme="@style/AppBaseTheme"才可以解决。

6.:【Android异常】The specified child already has a parent. You must call removeView() on the child's parent first.
解决方法:

View v = inflater.inflate(R.layout.preference_fragment, container, false);

原因在这里:关于异常“The specified child already has a parent. You must call removeView”的解决(举例说明,附源码)

7.:Error inflating class错误
亮点在评论,我是照着评论解决的。

我遇到的问题是 我只定义了(Context ctx)一个构造函数,然后出错。解决方法是加上另外两个构造函数(Context context, AttributeSet attrs, int defStyle),(Context context, AttributeSet attrs)

8.:消除Context为空的NullPointerException异常
这个错误很奇葩,Act_A->Act_B后,Act_B->Act_C,我不断地操作Act_B->Act_C,结果去报Act_A空指针的异常。

1
2
3
4
5
6
7
8
FATAL EXCEPTION: main
java.lang.NullPointerException
at android.content.ContextWrapper.getResources(ContextWrapper.java:89)
at android.view.ContextThemeWrapper.getResources(ContextThemeWrapper.java:78)
at android.content.Context.getText(Context.java:317)
at com.revenco.goldtrade.activity.MobileTraderWindow$1.handleMessage(MobileTraderWindow.java:128)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)

这个位置在Handler中,报的是getText为空,看源码知道getResource().getText(rsid),那么就是Context为空。
个人觉得解决方案
getApplicationContext().getResource().getText(rsid)来进行代替,因为getApplicationContext()是属于全局的,并不会由于没加载进来或者其他原因为空。但是不时才会有这个异常,难捕捉。

android.os.NetworkOnMainThreadException的解决方案

我的解决方案,我将HttpClient放在了Handler上执行才出现这个错误,只要放回Thread上执行就ok

9. # Android INSTALL_FAILED_UID_CHANGED
只需要按着提示走:

rm -f /data/local/tmp/<your.package.name> 这个路径跟网上的提供不同,我也是看terminal看到的。

10. 关于android.view.WindowLeaked的解决方案