第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

【Android 開(kāi)發(fā)技巧】常見(jiàn)問(wèn)題歸納——需要注意的坑和解決方案

標(biāo)簽:
Java Android

图片描述

  1. 在Activity还没完全显示时,弹出PopupWindow或者Dialog 崩Activity not running 错误

    解决方案: 重写onWindowFocusChanged方法
    
           @Override  
    public void onWindowFocusChanged(boolean hasFocus) {  
    
        if (hasFocus) {  
            if (!mIsInitData) {  
                initData();  
                mIsInitData = true;  
            }  
        }  
    
        super.onWindowFocusChanged(hasFocus);  
    }  
    
    protected void initData() {  
               // 在此处编写弹出Popup或者Dialog的方法  
    }  
  2. 在library中使用switch语句处理id 时报错

    产生原因:library中生成的R文件中生成的id 没有用final 修饰(不要问为什么,我也想知道)
    
    解决方案:使用if else 替换switch
  3. 不要在Application中缓存任何数据,NoPointException

    产生原因:一般情况下不会出现异常,当按下Home 应用隐藏到后台,长时间未使用,导致应用被回收,当再次启动时,Application会重新创建,而Activity此时再向Application里取数据,异常发生

    解决方案:将数据缓存到sp 或者数据库或者sd卡。或者在使用Application缓存数据时,进行null判断

  4. AsyncTask只能执行一次

  5. 提取一个BaseActivity,里面进行一些统一处理,能让你的代码更简洁。继承第三方框架的时候也很方便处理,特别是继承友盟统计是,如果没有Base,那你就哭(┬_┬)吧

    
    public abstract class BaseActivity extends Activity implements OnClickListener {  
    
        private boolean mIsInitData;  
    
        @Override  
        protected void onCreate(Bundle savedInstanceState) {  
            super.onCreate(savedInstanceState);  
    
        }  
        @Override  
        public void setContentView(int layoutResID) {  
            super.setContentView(layoutResID);  
            initView();  
        }  
        @Override  
        public void onWindowFocusChanged(boolean hasFocus) {  
    
            if (hasFocus) {  
                if (!mIsInitData) {  
                    initData();  
                    mIsInitData = true;  
                }  
            }  
    
            super.onWindowFocusChanged(hasFocus);  
        }  
    
        protected void initData() {  
    
        }  
    
        protected abstract void initView();  
    
        /** 
         * 获取View 
         *  
         * @param id 
         * @return 
         */  
        @SuppressWarnings("unchecked")  
        protected <T extends View> T mGetView(int id) {  
            return (T) findViewById(id);  
        }  
    
        /** 
         * 获取Button的实例 并绑定点击事件 
         *  
         * @param id 
         * @return 
         */  
        protected Button mGetButtonSetOnClick(int id) {  
    
            Button btn = (Button) findViewById(id);  
            btn.setOnClickListener(this);  
            return btn;  
        }  
    
        /** 
         * 获取ImageView的实例 并绑定点击事件 
         *  
         * @param id 
         * @return 
         */  
        protected ImageView mGetImageViewSetOnClick(int id) {  
    
            ImageView image = (ImageView) findViewById(id);  
            image.setOnClickListener(this);  
            return image;  
        }  
    
        /** 
         * 获取View的实例 并绑定点击事件 
         *  
         * @param id 
         * @return 
         */  
        protected View mGetViewSetOnClick(int id) {  
    
            View view = (View) findViewById(id);  
            view.setOnClickListener(this);  
            return view;  
        }  
    
        /** 
         * 获取TextView中的文本信息 
         *  
         * @param tv 
         * @return 
         */  
        protected String mGetTextViewContent(TextView tv) {  
            return tv.getText().toString().trim();  
        }  
    
        /** 
         * 获取EditText中的文本信息 
         *  
         * @param et 
         * @return 
         */  
        protected String mGetEditTextContent(EditText et) {  
            return et.getText().toString().trim();  
        }  
            protected void showHintMsg(int sid) {  
            MToast.showToast(this, getResources().getString(sid));  
        }  
        protected void showHintMsg(String sMsg) {  
            MToast.showToast(this, sMsg);  
        }  
    
    }  
  6. Toast定义为全局,避免一直不断的吐吐吐吐。

    public class MToast {  
        private static Toast mToast;  

        private static TextView tv_content;  

        public static void showToast(Context context, String msg) {  
            try {  

                if (mToast == null) {  
                    mToast = Toast.makeText(context, msg, Toast.LENGTH_SHORT);  
                    mToast.setGravity(Gravity.TOP, 0,  
                            DensityUtil.dip2px(context, 3));  
                    View view = View.inflate(context, R.layout.m_toast, null);  
                    tv_content = (TextView) view.findViewById(R.id.tv_content);  
                    mToast.setView(view);  
                    tv_content.setText(msg);  
                } else {  
                    tv_content.setText(msg);  
                }  
                mToast.show();  
            } catch (Exception e) {  
                // TODO: handle exception  
            }  
        }  
    }  
  1. 标题栏样式抽取,抽取思路大概有两种,第一种:用<inlcude>标签在xml布局时引入,第二种:自定义一个TitleView,千万不要偷懒节省这个步骤。指不定那天产品就要让你改个样式,到时候你就哭吧。不仅仅是标题栏,字体大小,主题颜色,能抽取的都统一处理,产品的心和女人的新一样,说变就变。

  2. TextView.setText();中要显示int类型的值,用String.valueOf()转,不要直接124+“”,不知道为什么这样的同学,基础太差,去看看源码就知道为什么了。

  3. 退出应用方式,1.直接杀死进程 2.在BaseActivity中注册一个广播,发送广播关闭 3.定义一个全局容器存储Activity应用,退出时遍历退出(不推荐)

  4. 一个功能分几个页面处理时,使用Dialog 模拟Activity 避免了数据在Activity之间传递。

  5. 手机重启,知乎上看到滴,通过不断的new 空Toast,导致系统奔溃而重启,想想竟有一种无言以对的感觉,原来Toast还可以尼玛这么玩

    
    public void onClick(View v){  
           while(true){  
                Toast toast = new Toast(this);  
                 toast.setView(new View(this));  
                 toast.show();  
         }  
    
    }  
  6. View类中的setSelected(boolean)方法结合android:state_selected="" 用来实现图片选中效果 自定义标题栏用起来很方便;

  7. EditText 中有个 android:digits="" 属性,用来自定义输入的字符类型,比如输入身份证只能是数字和x或者X 使用 android:digits="1234567890xX" 就轻松搞定了,不用再在代码里面进行蛋疼的校验了;
    今天就补充到这,更多精彩可以关注我的csdn博客:http://my.csdn.net/soul_code

本文为慕课网作者原创,转载请标明【原文作者及本文链接地址】。侵权必究,谢谢合作!
點(diǎn)擊查看更多內(nèi)容
20人點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
JAVA開(kāi)發(fā)工程師
手記
粉絲
8547
獲贊與收藏
6550

關(guān)注作者,訂閱最新文章

閱讀免費(fèi)教程

感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消