Android(安卓)积累一些常见的开发异常与问题
16lz
2021-01-25
1.使用PullToRefresh库的时候,想让其自动刷新(setRefreshing)不起效果
下面的解决方式,当设定的时间小的时候,同样也会导致刷新失败(这里设置了1000ms)
/** * 自动刷新 */ private void autoRefresh() { gv_tuijian.postDelayed(new Runnable() { @Override public void run() { gv_tuijian.setRefreshing(true); } }, 1000); } /** * 刷新结束 */ private void autoComplete() { gv_tuijian.postDelayed(new Runnable() { @Override public void run() { gv_tuijian.onRefreshComplete(); } }, 1000); }
2. Caused by: android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its
子线程不能跟新UI的问题,一般用rxjava可以快速方便的切换线程,从而解决问题
Observable.timer(5000, TimeUnit.MILLISECONDS).observeOn(AndroidSchedulers.mainThread()).subscribe(new Action1() { @Override public void call(Long aLong) { if (rl_forward.getVisibility() == VISIBLE) { rl_forward.setVisibility(GONE); } } });
3.PopupWindow显示的时候,为什么其余的组件不可点击
new PopupWindow 的时候如果只传入三个参数,默认是获取焦点的 gradePop = new PopupWindow( view,//要显示的view layoutParams.width,//popupwindow's width WindowManager.LayoutParams.WRAP_CONTENT,//popupwindow's height false//是否可以获取焦点 );
4.listview嵌套webview,滑动时,有大量空白的问题
解决方案一我的解决方案:我修改了我的适配器里的布局文件,把里面的一些match_parent改成自适应,虽然改了之后有爆红的问题,但编译无碍,问题解决
我改之前的布局
<?xml version="1.0" encoding="utf-8"?>
改之后的布局:
<?xml version="1.0" encoding="utf-8"?>
5.如何在广播接收器里展示Dialog
batteryDialog = new NiftyDialogBuilder(context, 340, 225,""); View dialogView = LayoutInflater.from(context).inflate(R.layout.dialog_battery, null); batteryDialog.setCustomView(dialogView, context); batteryDialog.setCancelable(true); batteryDialog.isCancelableOnTouchOutside(true); batteryDialog.withEffect(Effectstype.Slit); //广播里展示Dialog需要设置 batteryDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); batteryDialog.show(); Logger.i("弹出充满电的框");
添加权限:
6.调用系统相机相册
//相册 RxView.clicks(iv_xiangce).throttleFirst(2, TimeUnit.SECONDS).subscribe(new Action1() { @Override public void call(Void aVoid) { /* Intent intent = new Intent(); intent.addCategory(Intent.CATEGORY_OPENABLE); intent.setType("image*//*"); if (Build.VERSION.SDK_INT < 19) { intent.setAction(Intent.ACTION_GET_CONTENT); } else { intent.setAction(Intent.ACTION_OPEN_DOCUMENT); } startActivityForResult(intent, 0x102);*/ Intent albumIntent = new Intent(Intent.ACTION_PICK, null); albumIntent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*"); startActivityForResult(albumIntent,0x102); } });
RxView.clicks(iv_camera).throttleFirst(2, TimeUnit.SECONDS).subscribe(new Action1() { @Override public void call(Void aVoid) { //调用相机拍照 Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intent, 1); } });
6.调用系统相册,不选取图片,只是调系统相册(解决打开系统相册,选取图片,闪退)
ProjectUtils.runApp("com.android.gallery3d","com.android.gallery3d.app.GalleryActivity",MoreActivity.this,"系统相册");
public static void runApp(String packName, String className, Context context, String apkName) { try { Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_LAUNCHER); ComponentName cn = new ComponentName(packName, className); intent.setComponent(cn); context.startActivity(intent); } catch (Exception e) { Toast.makeText(context, apkName + "未安装!", Toast.LENGTH_SHORT).show(); } }
7.android studio 打不开模拟器(avd):
Emulator PANIC Broken AVD system path. Check your ANDROID_SDK_ROOT value [DSdk]
解决方案:
打开电脑的环境变量:我把 ANDROID_HOME ANDROID_SDK ANDROID_SDK_ROOT 都改成我的sdk目录,然后重启AS,就成功了。
更多相关文章
- Nginx系列教程(六)| 手把手教你搭建 LNMP 架构并部署天空网络电影
- Android调用系统摄像头--使用MediaRecorder--1--预览(preview)功
- 通过Criteria获取LocationProvider
- Android(安卓)调用系统照相机拍照和录像
- 【JAVA】给大家推荐一道有意思的java测试题。你知道答案吗?
- android系统属性读写操作SystemProperties
- android打开手机相册获取真正的图片路径
- Android监听程序的安装和卸载
- Android拍照调用系统相册仿微信封装总结,治疗各种崩溃,图片横竖