告別繁瑣的findViewById,在Activity中使用注解。

我們都知道Android中是通過(guò)findViewById()這個(gè)方法來(lái)綁定xml中的控件的。但是當(dāng)控件較多時(shí),findViewById()的代碼行數(shù)也會(huì)隨之增多,而且這些findViewById函數(shù)并沒(méi)有表示其他特殊的含義。因此,activity中大量重復(fù)的findViewById()方法就導(dǎo)致了整個(gè)代碼看起來(lái)很臃腫。

還好,我們可以使用注解的方法來(lái)簡(jiǎn)化findViewById()

第一步,定義我們的注解類(lèi):


@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface ViewInject {  
    int value() default 0;  
}  

第二步,在activity中增加解析注解方法

public void autoInjectAllField() {  
        try {  
            Class<?> clazz = this.getClass();  
            Field[] fields = clazz.getDeclaredFields();//獲得Activity中聲明的字段  
            for (Field field : fields) {  
                // 查看這個(gè)字段是否有我們自定義的注解類(lèi)標(biāo)志的  
                if (field.isAnnotationPresent(ViewInject.class)) {  
                    ViewInject inject = field.getAnnotation(ViewInject.class);  
                    int id = inject.value();  
                    if (id > 0) {  
                        field.setAccessible(true);  
                        field.set(this, this.findViewById(id));//給我們要找的字段設(shè)置值  
                    }  
                }  
            }  
        } catch (IllegalAccessException e) {  
            e.printStackTrace();  
        } catch (IllegalArgumentException e) {  
            e.printStackTrace();  
        }  
    } 

第三步 enjoy it!

/**
 *用法示例
 **/

@ViewInject(R.id.tv_main)
TextView text;

參考文章:Android中通過(guò)注解代替findViewById方法

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容