今年遇到的简单错误及解决办法汇总,用有道笔记写的,挺好用的,在遇到错误的过程中,简单记录,既可以方便下次解决问题,又可以给他人带来方便,是很好的习惯;
1.Android Studio 添加assert目录
在配置文件XXX.iml中写入
在项目XXX中创建对应目录:XXX\src\main\assets
2.异步加载图片,使用开源项目universalimageloader
①Application中配置
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(
getApplicationContext())
.threadPriority(Thread.NORM_PRIORITY - 2)// 设置线程的优先级
.denyCacheImageMultipleSizesInMemory()// 当同一个Uri获取不同大小的图片,缓存到内存时,只缓存一个。默认会缓存多个不同的大小的相同图片
.discCacheFileNameGenerator(new Md5FileNameGenerator())// 设置缓存文件的名字
.discCacheFileCount(60)// 缓存文件的最大个数
.tasksProcessingOrder(QueueProcessingType.LIFO)// 设置图片下载和显示的工作队列排序
.defaultDisplayImageOptions(ImageOptions.options)
.build();
ImageLoader.getInstance().init(config);
②程序中首先获得实例,然后加载信息
ImageLoader.getInstance().DisplayImage((String) listData.get(position).get(“headimgurl”),holder.head, false);
ImageLoader.getInstance().DisplayImage(url,textView, true/false);
3.自定义排序,适合hashmap、自定义数据类型等
Arrays.sort(names, new Comparator< String >() {
@Override
public int compare( String firstMapEntry,
String secondMapEntry) {
if (firstMapEntry .equals(“其他”))
return 1;
if (secondMapEntry .equals(“其他”))
return -1;
else
return firstMapEntry.compareTo(secondMapEntry);
}
});
Collections.sort(keySet, new Comparator() {
public int compare(Object o1, Object o2) {
if(Integer.parseInt(o1.toString())>Integer.parseInt(o2.toString())
return 1;
if(Integer.parseInt(o1.toString())==Integer.parseInt(o2.toString())
return 0;
else
return -1;
}
});
4.报错:android.content.res.Resources$NotFoundException: String resource ID #0x1
将int设置给textView时报错,最简单办法:t1.setText(id+”“);
或者 t1.setText(String.valueOf(id));
5.java.lang.NullPointerException
at android.widget.AbsListView.obtainView(AbsListView.java:2470)
原因:ListView的getView方法返回null时,报此错
6.android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
不适当更改UI, 请使用handler或者观察者模式
7.java.lang.NullPointerException at android.widget.ArrayAdapter.createViewFromResource
ArrayAdapter里面有数据为空,或者使用了不存在的组件id、组件
8.最简单的Monkey测试
adb shell monkey -p com.judicial.manager -s 500 -v 50000
未执行完成中止
adb shell
ps|grep monkey
kill id
9.html页面加载后执行动作如自动执行js或者调用html中的js方法等:
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
dloadData();
readData();
}
});
public void readData() {
webView.loadUrl("javascript:" + javascrpit);
}
10.Popwindows
this.showAsDropDown(parent, parent.getLayoutParams().width / 2, 50);
//显示在某个组件下方
popupWindow.showAsDropDown(a5_ref);