Android常见错误及需求

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

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);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值