<span style="font-size:24px;"><span style="font-size:18px;">1.Fragment not attached to Activity 异常
原因:因为Fragment在还没有Attach到Acitivity时,调用了诸如getResource()方法 如 getResources().getString(R.string.a);
解决方案,在获取资源之前调用isAdded()方法,判断Fragment 是否被添加到所属的Activity,添加返回true,反之,返回false。
2. unable to start receiver 不能启动BroadcastReceiver
原因:使用Activity以外的context来startActivity时,必须制定Intent.FLAG_ACTIVITY_NEW_TASK , 如,在BroadcastReceiver中启动一个activity,Intent in=new Intent(xx,xx.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent);
3.Unable to instantiate receiver 找不到服务
原因是 manifest中对应的包名不对。
4.writing serializable object(name=xxx) 对象不支持序列化
原因:某个类没有 implements Serializable 或者没有implements parcelable接口
注意的是,JSONObjecthe JSONArray不支持序列化
5.ClassNotFoundException when unmarshalling 序列化时未指定ClassLoader
原因:在使用Parcelable机制的时候,会出现。如:
public class MyParcelable implements Parcelable{
private String mStr;
private ClassA a;
private MyParcelable(Parcel in){
mStr=in.readString();
a=in.readParcelable(null);//此处会崩溃 对a的反序列化上。 应改为 a=in.readParcelable(ClassA.class.getClassLoader());
}
}
6.Unable to add window-- token null is not for an application
如:new AlertDialog.Builder(getApplicationContext())
原因;AlertDialog.Builder() 参数不可以是 getApplicationContext()获取到的context 应该是一个Activity 即xxxActivity.this;
7.unable to add window android.view .ViewRootImp1$W... --permission denied for this window type 在使用WindowManager.LayoutParams.TYPE_ALERT 自定义弹出框的时候,没有加权限。
在manifest中加入SYSTEM_ALER_WINDOW和SYSTEM_OVERLAY_WINDOW权限 前者允许应用使用SYSTEM_ALER_WINDOW打开窗口,后者允许使用窗体覆盖window上。
8.UnstatisfiedLinkError 项目中so文件么有加载到,libs下面没有导入.so文件或者没有导全。
9.No permission to modify thread 没有加权限
有的手机是禁止app打电话的,即使添加权限,所以为了避免发生此类异常,我们在调用之前先加判断,比如判断是否有打电话的权限
PackageManager pm=getPackageManager();
boolean hasPermission=pm.checkPermission(Manifest.permisson.CALL_PHONE,getPackageName())==PackageManager.PERMISSION_GRANTED;
如果hasPermission返回的是true 证明有这个权限
if(hasPermission){
Intent intent=new Intent(Intent.ACTION_CALL,Uri.parse("tel:1385455845"));
}
10.SecurityException Intent 中图片太大
用Intent进行传值的时候,尽量不要超过1MB的数据,尽量不要传递Bitmap.
11.ActivityNotFoundException Unable to find explicit activity class{com.android.settings/com.android.settings.WirelessSettings};
当打开系统Wifi设置会报此错误。 原因是,4.0以上把原来的打开网络设置方式舍弃了。
if(Build.VERSION.SDK_INT>13){//3.2以上带卡设置页面
startActivity(new Intent(android.provider.Settings.ACTION_SETTINGS));
}else{
startActivity(new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS));
}
12.Service Intent must be explicit 启动服务异常
android升级到5.0以后会发生,应该用下面的代码启动service
Intent inttent=new Intent();
intent.setAction("your action name");
intent.setAction(getPackageName());
context.startService(intent);
13.JSON解析异常
getString("key"); key在JSON字符串中不存在,此种解析会抛出异常
optString("xxxx");key在JSON字符串中不存在,此种解析会返回空
getArray()与optArray也是如此,建议用后者。
14.No package identifier when getting value for resource number ...
LayouInflater.from(context).inflate();此方法一定不能再父类或者虚类中调用
如:View view =LayoutInflater.from(context).inflate(R.layout.xxx,this,true);
android系统就会搞不明白这个this是谁,所以不能这么写。
15.android.content.res.Resources$NotFoundException: String resource ID #0x1
此错误为xxx.setText(a),参数a是int类型 应该为xxx.setText(String.value(a))或者xxx.setText(a+“”)
16.android 用webview加载数据时,报android 网页无法加载 net::ERR_TIMED_OUT
原因是在开代理。
17.E:\Work\ActivityAnimation\app\src\main\res\layout\seconditemW.xml: Error: 'W' is not a valid file-based resource name character: File-based resource names must contain only lowercase a-z, 0-9, or underscore
布局文件命名的时候不可是大写字母,只允许是a-z 0-9和下划线
18.Error:(2) Error retrieving parent for item: No resource found that matches the given name 'android:TextAppearance.Material.Widget.Button.Inverse'.
Error:(2) Error retrieving parent for item: No resource found that matches the given name 'android:Widget.Material.Button.Colored'.
此错误背景是,项目中运用到了RecyclerView,出现这个问题的原因是:
Check Build Target of your project and appcompat_v7 library project. They should be same, if your project has lesser Build Target than you get this error and won't be able to build.
19.WebView加载url的时候,报登录过期,此时webview的loadUrl方法,相当于get请求,同时要在url路径后拼上ticket,如www.ddd.cn?ticket=xxxxx;
20.v4包下的ViewCompat类中找不到setAlpha setScaleX setScaleY 方法
原因:不明 估计是v4包版本不能太低,不过解决了, 换了一个v4包,就可以了,
com.android.support:support-v4:22.2.1。
21.进入activity后隐藏键盘 ScrollView中嵌套ListView时,同时可做到防止自动滑动到底部
在父布局中加入如下属性
android:focusable="true"
android:focusableInTouchMode="true"
22.java.lang.RuntimeException: Unable to start activity ComponentInfo{cn.doolii.shopping/cn.doolii.shopping.view.uploadImage.AlbumUploadActivity}: java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider uri content://media/external/images/thumbnails from pid=27138, uid=10103 requires android.permission.READ_EXTERNAL_STORAGE, or grantUriPermission()at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2453)
在拍照的时候报如上问题,原因是没有添加相机权限
<uses-permission android:name="android.permission.CAMERA" />
同时android6.0以上系统新出权限问题
解决方法如下:
public final static int MY_PERMISSIONS_REQUEST_READ_CONTACTS=1;
在调用需要权限的方法,调用如下方法:
@TargetApi(Build.VERSION_CODES.M)
private void getPermission() {
if (ContextCompat.checkSelfPermission(UploadPicActivity.this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
//申请CAMERA的权限
requestPermissions(new String[]{Manifest.permission.CAMERA}, MY_PERMISSIONS_REQUEST_READ_CONTACTS);
} else {
photo();
pop.dismiss();
ll_popup.clearAnimation();
}
}
返回结果
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
case MY_PERMISSIONS_REQUEST_READ_CONTACTS:
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
photo();
} else {
Toast.makeText(UploadPicActivity.this, "请打开相机权限", Toast.LENGTH_LONG).show();
}
break;
}
}
23.在布局中为ImageView设置默认图片src=“@drawablexxx”
然后在代码中调用imageView.setBackGgroundDrawable();
发现ImageView的图片还是默认的布局中的,而不是我们动态设置的,
解决方法,就是不要在布局中写src
</span></span>