Android 积累一些常见的开发异常与问题

来源:互联网 发布:实木 知乎 编辑:程序博客网 时间:2024/05/16 06: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<Long>() {                @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"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:background="@drawable/buzhi_bg_content"    android:orientation="vertical">    <LinearLayout        android:id="@+id/ll_container"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:orientation="horizontal">        <LinearLayout            android:layout_width="0dp"            android:layout_height="match_parent"            android:layout_weight="63"            android:orientation="vertical">            <TextView                android:id="@+id/tv_no"                android:layout_width="24dp"                android:layout_height="24dp"                android:layout_gravity="center_horizontal"                android:layout_marginLeft="10dp"                android:layout_marginTop="25dp"                android:background="@drawable/checkp_bg_xuhao"                android:gravity="center"                android:textColor="#666666"                android:textSize="16sp" />        </LinearLayout>        <RelativeLayout            android:layout_width="0dp"            android:layout_height="match_parent"            android:layout_weight="560"            android:orientation="vertical">            <WebView                android:id="@+id/wb_timu"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:layout_margin="10dp"></WebView>            <RelativeLayout                android:id="@+id/rl"                android:layout_width="match_parent"                android:layout_height="match_parent"></RelativeLayout>        </RelativeLayout>        <LinearLayout            android:layout_width="0dp"            android:layout_height="match_parent"            android:layout_weight="200"            android:orientation="vertical">            <costomview.circleprogressview.CircleProgressView                android:id="@+id/cpv"                android:layout_width="@dimen/item_tongjiadapter_cpv_wh"                android:layout_height="@dimen/item_tongjiadapter_cpv_wh"                android:layout_gravity="center_horizontal"                android:layout_marginTop="10dp" />            <TextView                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:layout_gravity="center_horizontal"                android:layout_marginTop="9dp"                android:gravity="center"                android:text="正确率"                android:textColor="#999999"                android:textSize="@dimen/item_tongjiadapter_tv" />            <LinearLayout                android:layout_width="match_parent"                android:layout_height="wrap_content"                android:gravity="center"                android:orientation="horizontal">                <TextView                    android:layout_width="wrap_content"                    android:layout_height="wrap_content"                    android:layout_gravity="center_vertical"                    android:gravity="center"                    android:text="A"                    android:textColor="#666666"                    android:textSize="@dimen/item_tongjiadapter_tv2_textsize" />                <ProgressBar                    android:id="@+id/pb_a"                    style="?android:attr/progressBarStyleHorizontal"                    android:layout_width="@dimen/item_tongjiadapter_pb_layout_width"                    android:layout_height="5dp"                    android:layout_gravity="center_vertical"                    android:layout_marginLeft="5dp"                    android:max="100"                    android:progress="40"                    android:progressDrawable="@drawable/progressbar_horizontal_2" />                <TextView                    android:id="@+id/tv_a"                    android:layout_width="@dimen/item_tongjiadapter_tv_layout_width"                    android:layout_height="wrap_content"                    android:layout_gravity="center_vertical"                    android:layout_marginLeft="5dp"                    android:gravity="center"                    android:textColor="#999999"                    android:textSize="@dimen/item_tongjiadapter_tv" />            </LinearLayout>            <LinearLayout                android:layout_width="match_parent"                android:layout_height="wrap_content"                android:layout_marginTop="6dp"                android:gravity="center"                android:orientation="horizontal">                <TextView                    android:layout_width="wrap_content"                    android:layout_height="wrap_content"                    android:layout_gravity="center_vertical"                    android:gravity="center"                    android:text="B"                    android:textColor="#666666"                    android:textSize="@dimen/item_tongjiadapter_tv2_textsize" />                <ProgressBar                    android:id="@+id/pb_b"                    style="?android:attr/progressBarStyleHorizontal"                    android:layout_width="@dimen/item_tongjiadapter_pb_layout_width"                    android:layout_height="5dp"                    android:layout_gravity="center_vertical"                    android:layout_marginLeft="5dp"                    android:max="100"                    android:progress="40"                    android:progressDrawable="@drawable/progressbar_horizontal_2" />                <TextView                    android:id="@+id/tv_b"                    android:layout_width="@dimen/item_tongjiadapter_tv_layout_width"                    android:layout_height="wrap_content"                    android:layout_gravity="center_vertical"                    android:layout_marginLeft="5dp"                    android:gravity="center"                    android:textColor="#999999"                    android:textSize="@dimen/item_tongjiadapter_tv" />            </LinearLayout>            <LinearLayout                android:layout_width="match_parent"                android:layout_height="wrap_content"                android:layout_marginTop="6dp"                android:gravity="center"                android:orientation="horizontal">                <TextView                    android:layout_width="wrap_content"                    android:layout_height="wrap_content"                    android:layout_gravity="center_vertical"                    android:gravity="center"                    android:text="C"                    android:textColor="#666666"                    android:textSize="@dimen/item_tongjiadapter_tv2_textsize" />                <ProgressBar                    android:id="@+id/pb_c"                    style="?android:attr/progressBarStyleHorizontal"                    android:layout_width="@dimen/item_tongjiadapter_pb_layout_width"                    android:layout_height="5dp"                    android:layout_gravity="center_vertical"                    android:layout_marginLeft="5dp"                    android:max="100"                    android:progress="40"                    android:progressDrawable="@drawable/progressbar_horizontal_2" />                <TextView                    android:id="@+id/tv_c"                    android:layout_width="@dimen/item_tongjiadapter_tv_layout_width"                    android:layout_height="wrap_content"                    android:layout_gravity="center_vertical"                    android:layout_marginLeft="5dp"                    android:gravity="center"                    android:textColor="#999999"                    android:textSize="@dimen/item_tongjiadapter_tv" />            </LinearLayout>            <LinearLayout                android:layout_width="match_parent"                android:layout_height="wrap_content"                android:layout_marginTop="6dp"                android:gravity="center"                android:orientation="horizontal">                <TextView                    android:layout_width="wrap_content"                    android:layout_height="wrap_content"                    android:layout_gravity="center_vertical"                    android:gravity="center"                    android:text="D"                    android:textColor="#666666"                    android:textSize="@dimen/item_tongjiadapter_tv2_textsize" />                <ProgressBar                    android:id="@+id/pb_d"                    style="?android:attr/progressBarStyleHorizontal"                    android:layout_width="@dimen/item_tongjiadapter_pb_layout_width"                    android:layout_height="5dp"                    android:layout_gravity="center_vertical"                    android:layout_marginLeft="5dp"                    android:max="100"                    android:progress="40"                    android:progressDrawable="@drawable/progressbar_horizontal_2" />                <TextView                    android:id="@+id/tv_d"                    android:layout_width="@dimen/item_tongjiadapter_tv_layout_width"                    android:layout_height="wrap_content"                    android:layout_gravity="center_vertical"                    android:layout_marginLeft="5dp"                    android:gravity="center"                    android:textColor="#999999"                    android:textSize="@dimen/item_tongjiadapter_tv" />            </LinearLayout>        </LinearLayout>    </LinearLayout>    <RelativeLayout        android:layout_width="match_parent"        android:layout_height="match_parent"        android:background="@drawable/buzhi_bg_content_bottom">        <RelativeLayout            android:id="@+id/rl_control"            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:gravity="center"            android:paddingBottom="5dp"            android:paddingTop="5dp">            <TextView                android:id="@+id/tv"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:layout_centerVertical="true"                android:gravity="center"                android:text="查看答案解析"                android:textColor="#666666"                android:textSize="14sp" />            <ImageView                android:id="@+id/iv_flag"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:layout_centerVertical="true"                android:layout_marginLeft="4dp"                android:layout_toRightOf="@+id/tv"                android:scaleType="fitCenter"                android:src="@mipmap/buzhi_content_arrow01" />        </RelativeLayout>        <TextView            android:id="@+id/tv_divider"            android:layout_width="match_parent"            android:layout_height="1dp"            android:layout_below="@+id/rl_control"            android:background="@drawable/home_content_dl"></TextView>        <LinearLayout            android:id="@+id/ll_answer"            android:layout_width="match_parent"            android:layout_height="match_parent"            android:layout_below="@+id/tv_divider"            android:orientation="vertical"            android:paddingBottom="15dp"            android:paddingLeft="19dp"            android:paddingTop="15dp"            android:visibility="gone">            <LinearLayout                android:layout_width="match_parent"                android:layout_height="match_parent"                android:orientation="horizontal">                <TextView                    android:layout_width="wrap_content"                    android:layout_height="wrap_content"                    android:gravity="center"                    android:text="【答案】"                    android:textColor="#505050"                    android:textSize="14sp" />                <WebView                    android:id="@+id/wb_daan"                    android:layout_width="wrap_content"                    android:layout_height="wrap_content"                    android:layout_marginRight="10dp" />            </LinearLayout>            <LinearLayout                android:layout_width="match_parent"                android:layout_height="match_parent"                android:layout_marginTop="10dp"                android:orientation="horizontal">                <TextView                    android:layout_width="wrap_content"                    android:layout_height="wrap_content"                    android:gravity="center"                    android:text="【解析】"                    android:textColor="#505050"                    android:textSize="14sp" />                <WebView                    android:id="@+id/wb_jiexi"                    android:layout_width="wrap_content"                    android:layout_height="wrap_content"                    android:layout_marginRight="10dp"                    />            </LinearLayout>        </LinearLayout>    </RelativeLayout></LinearLayout>

改之后的布局:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:background="@drawable/buzhi_bg_content"    android:orientation="vertical">    <LinearLayout        android:id="@+id/ll_container"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:orientation="horizontal">        <LinearLayout            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="63"            android:orientation="vertical">            <TextView                android:id="@+id/tv_no"                android:layout_width="24dp"                android:layout_height="24dp"                android:layout_gravity="center_horizontal"                android:layout_marginLeft="10dp"                android:layout_marginTop="25dp"                android:background="@drawable/checkp_bg_xuhao"                android:gravity="center"                android:textColor="#666666"                android:textSize="16sp" />        </LinearLayout>        <RelativeLayout            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="560"            android:orientation="vertical">            <WebView                android:id="@+id/wb_timu"                android:layout_width="match_parent"                android:layout_height="wrap_content"                android:layout_margin="10dp"></WebView>            <RelativeLayout                android:id="@+id/rl"                android:layout_width="match_parent"                android:layout_height="match_parent"></RelativeLayout>        </RelativeLayout>        <LinearLayout            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="200"            android:orientation="vertical">            <costomview.circleprogressview.CircleProgressView                android:id="@+id/cpv"                android:layout_width="@dimen/item_tongjiadapter_cpv_wh"                android:layout_height="@dimen/item_tongjiadapter_cpv_wh"                android:layout_gravity="center_horizontal"                android:layout_marginTop="10dp" />            <TextView                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:layout_gravity="center_horizontal"                android:layout_marginTop="9dp"                android:gravity="center"                android:text="正确率"                android:textColor="#999999"                android:textSize="@dimen/item_tongjiadapter_tv" />            <LinearLayout                android:layout_width="match_parent"                android:layout_height="wrap_content"                android:gravity="center"                android:orientation="horizontal">                <TextView                    android:layout_width="wrap_content"                    android:layout_height="wrap_content"                    android:layout_gravity="center_vertical"                    android:gravity="center"                    android:text="A"                    android:textColor="#666666"                    android:textSize="@dimen/item_tongjiadapter_tv2_textsize" />                <ProgressBar                    android:id="@+id/pb_a"                    style="?android:attr/progressBarStyleHorizontal"                    android:layout_width="@dimen/item_tongjiadapter_pb_layout_width"                    android:layout_height="5dp"                    android:layout_gravity="center_vertical"                    android:layout_marginLeft="5dp"                    android:max="100"                    android:progress="40"                    android:progressDrawable="@drawable/progressbar_horizontal_2" />                <TextView                    android:id="@+id/tv_a"                    android:layout_width="@dimen/item_tongjiadapter_tv_layout_width"                    android:layout_height="wrap_content"                    android:layout_gravity="center_vertical"                    android:layout_marginLeft="5dp"                    android:gravity="center"                    android:textColor="#999999"                    android:textSize="@dimen/item_tongjiadapter_tv" />            </LinearLayout>            <LinearLayout                android:layout_width="match_parent"                android:layout_height="wrap_content"                android:layout_marginTop="6dp"                android:gravity="center"                android:orientation="horizontal">                <TextView                    android:layout_width="wrap_content"                    android:layout_height="wrap_content"                    android:layout_gravity="center_vertical"                    android:gravity="center"                    android:text="B"                    android:textColor="#666666"                    android:textSize="@dimen/item_tongjiadapter_tv2_textsize" />                <ProgressBar                    android:id="@+id/pb_b"                    style="?android:attr/progressBarStyleHorizontal"                    android:layout_width="@dimen/item_tongjiadapter_pb_layout_width"                    android:layout_height="5dp"                    android:layout_gravity="center_vertical"                    android:layout_marginLeft="5dp"                    android:max="100"                    android:progress="40"                    android:progressDrawable="@drawable/progressbar_horizontal_2" />                <TextView                    android:id="@+id/tv_b"                    android:layout_width="@dimen/item_tongjiadapter_tv_layout_width"                    android:layout_height="wrap_content"                    android:layout_gravity="center_vertical"                    android:layout_marginLeft="5dp"                    android:gravity="center"                    android:textColor="#999999"                    android:textSize="@dimen/item_tongjiadapter_tv" />            </LinearLayout>            <LinearLayout                android:layout_width="match_parent"                android:layout_height="wrap_content"                android:layout_marginTop="6dp"                android:gravity="center"                android:orientation="horizontal">                <TextView                    android:layout_width="wrap_content"                    android:layout_height="wrap_content"                    android:layout_gravity="center_vertical"                    android:gravity="center"                    android:text="C"                    android:textColor="#666666"                    android:textSize="@dimen/item_tongjiadapter_tv2_textsize" />                <ProgressBar                    android:id="@+id/pb_c"                    style="?android:attr/progressBarStyleHorizontal"                    android:layout_width="@dimen/item_tongjiadapter_pb_layout_width"                    android:layout_height="5dp"                    android:layout_gravity="center_vertical"                    android:layout_marginLeft="5dp"                    android:max="100"                    android:progress="40"                    android:progressDrawable="@drawable/progressbar_horizontal_2" />                <TextView                    android:id="@+id/tv_c"                    android:layout_width="@dimen/item_tongjiadapter_tv_layout_width"                    android:layout_height="wrap_content"                    android:layout_gravity="center_vertical"                    android:layout_marginLeft="5dp"                    android:gravity="center"                    android:textColor="#999999"                    android:textSize="@dimen/item_tongjiadapter_tv" />            </LinearLayout>            <LinearLayout                android:layout_width="match_parent"                android:layout_height="wrap_content"                android:layout_marginTop="6dp"                android:gravity="center"                android:orientation="horizontal">                <TextView                    android:layout_width="wrap_content"                    android:layout_height="wrap_content"                    android:layout_gravity="center_vertical"                    android:gravity="center"                    android:text="D"                    android:textColor="#666666"                    android:textSize="@dimen/item_tongjiadapter_tv2_textsize" />                <ProgressBar                    android:id="@+id/pb_d"                    style="?android:attr/progressBarStyleHorizontal"                    android:layout_width="@dimen/item_tongjiadapter_pb_layout_width"                    android:layout_height="5dp"                    android:layout_gravity="center_vertical"                    android:layout_marginLeft="5dp"                    android:max="100"                    android:progress="40"                    android:progressDrawable="@drawable/progressbar_horizontal_2" />                <TextView                    android:id="@+id/tv_d"                    android:layout_width="@dimen/item_tongjiadapter_tv_layout_width"                    android:layout_height="wrap_content"                    android:layout_gravity="center_vertical"                    android:layout_marginLeft="5dp"                    android:gravity="center"                    android:textColor="#999999"                    android:textSize="@dimen/item_tongjiadapter_tv" />            </LinearLayout>        </LinearLayout>    </LinearLayout>    <RelativeLayout        android:layout_width="match_parent"        android:layout_height="match_parent"        android:background="@drawable/buzhi_bg_content_bottom">        <RelativeLayout            android:id="@+id/rl_control"            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:gravity="center"            android:paddingBottom="5dp"            android:paddingTop="5dp">            <TextView                android:id="@+id/tv"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:layout_centerVertical="true"                android:gravity="center"                android:text="查看答案解析"                android:textColor="@drawable/textcolor_style_01"                android:textSize="18sp" />            <ImageView                android:id="@+id/iv_flag"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:layout_centerVertical="true"                android:layout_marginLeft="6dp"                android:layout_toRightOf="@+id/tv"                android:scaleType="fitCenter"                android:src="@mipmap/buzhi_content_arrow01" />        </RelativeLayout>        <TextView            android:id="@+id/tv_divider"            android:layout_width="match_parent"            android:layout_height="1dp"            android:layout_below="@+id/rl_control"            android:background="@drawable/home_content_dl"></TextView>        <LinearLayout            android:id="@+id/ll_answer"            android:layout_width="match_parent"            android:layout_height="match_parent"            android:layout_below="@+id/tv_divider"            android:orientation="vertical"            android:paddingBottom="15dp"            android:paddingLeft="19dp"            android:paddingTop="15dp"            android:visibility="gone">            <LinearLayout                android:layout_width="match_parent"                android:layout_height="match_parent"                android:orientation="horizontal">                <TextView                    android:layout_width="wrap_content"                    android:layout_height="wrap_content"                    android:gravity="center"                    android:text="【答案】"                    android:textColor="#505050"                    android:textSize="14sp" />                <WebView                    android:id="@+id/wb_daan"                    android:layout_width="match_parent"                    android:layout_height="wrap_content"                    android:layout_marginRight="10dp" />            </LinearLayout>            <LinearLayout                android:layout_width="match_parent"                android:layout_height="match_parent"                android:layout_marginTop="10dp"                android:orientation="horizontal">                <TextView                    android:layout_width="wrap_content"                    android:layout_height="wrap_content"                    android:gravity="center"                    android:text="【解析】"                    android:textColor="#505050"                    android:textSize="14sp" />                <WebView                    android:id="@+id/wb_jiexi"                    android:layout_width="match_parent"                    android:layout_height="wrap_content"                    android:layout_marginRight="10dp"                    />            </LinearLayout>        </LinearLayout>    </RelativeLayout></LinearLayout>

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("弹出充满电的框");

添加权限:
   <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

6.调用系统相机相册
//相册        RxView.clicks(iv_xiangce).throttleFirst(2, TimeUnit.SECONDS).subscribe(new Action1<Void>() {            @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<Void>() {            @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();        }    }












0 0
原创粉丝点击