您的位置:首页 > 移动开发 > Android开发

Android常见错误及需求

2015-09-24 10:25 411 查看
今年遇到的简单错误及解决办法汇总,用有道笔记写的,挺好用的,在遇到错误的过程中,简单记录,既可以方便下次解决问题,又可以给他人带来方便,是很好的习惯;

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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android