AndroidAnnotation

1.@EActivity(R.id.xxx):表示這個類是一個activity並且對應某個佈局文件

@EActivity(R.layout.activity_main)  
public class MainActivity extends Activity {  
  
} 

可以看到,我們沒有了onCreate方法,也沒有了setContentView方法,依然能夠運行出界面
2.@ViewById(R.id.xxx):相當於findViewById(R.id.xxx)

@EActivity(R.layout.activity_main)  
public class MainActivity extends Activity {  
  
    @ViewById(R.id.btn)  
    public Button btn;  
  
}  


3.@Click(R.id.xxx):註解一個方法上,表示這個方法是某個按鈕的點擊事件

@EActivity(R.layout.activity_main)  
public class MainActivity extends Activity {  
  
    @ViewById(R.id.btn)  
    public Button btn;  
  
    @Click(R.id.btn)  
    void myClick(){  
        Toast.makeText(this,"AndroidAnnotations",Toast.LENGTH_SHORT).show();  
    }  
  
}  
//還可以對多個按鈕註解點擊事件
@Click({R.id.button1,R.id.button2,R.id.button3})    
void buttonClicked(Button btn){    
    switch(btn.getId()){    
    case R.id.button1:    
    //這裏實現button1的點擊事件    
        break;    
        ...    
    }    
}   

4.@AfterViews:只有所有View都注入完畢之後,纔會執行該註解的方法,一般進行一些初始化的操作

@EActivity(R.layout.activity_main)  
public class MainActivity extends Activity {  
  
    @ViewById(R.id.btn)  
    public Button btn;  
  
    @Click(R.id.btn)  
    void myClick(){  
        Toast.makeText(this,"AndroidAnnotations",Toast.LENGTH_SHORT).show();  
    }  
  
    @AfterViews  
    void init(){  
        btn.setText("按鈕注入完畢後才執行此方法");  
    }  
  
}  

5.@Extrs(String params):獲得其它地方跳轉過來時所傳遞過來的數據,括號中的字符串即爲傳遞過來的數據的key

Intent intent = new Intent(MainActivity.this,SecondActivity_.class);  
Bundle bundle = new Bundle();  
bundle.putString("hello","hello");  
intent.putExtras(bundle);  
startActivity(intent);  

 @Extra("hello")  
    String params;  

6.@Background和@UiThread 這兩個通常結合用,前一個用來寫後臺方法,後一個專注於UI控件的操作
@Background作用:相當於用來進行後臺操作的方法(比如請求網絡資源,操作文件等等),被Backgroung註解的方法裏面不能進行任何UI操作,否則會報錯。

@Background  
void httprequest(){  
     //進行http操作  
     //操作數據庫  
     //操作文件  
}  

@UiThread作用:相當於用來進行UI控件的操作,被UiThread註解的方法裏面不能進行任何後臺操作,否則會報錯

@UiThread  
void runinUI(){  
     Toast.makeText(this,"AndroidAnnotations",Toast.LENGTH_SHORT).show();  
}  

7.@EFragment:用來標識某個類屬於fragment並指定到佈局文件

@EFragment(R.layout.layout_myfragment)  
public class MyFragment extends Fragment{  
  
} 

8.@FragmentArg:用來給當前Fragment接收別的地方傳來的數據,給myfragment傳遞一個參數

@EActivity(R.layout.activity_main)  
public class MainActivity extends Activity {  
  
    @ViewById(R.id.btn)  
    public Button btn;  
  
    @Click(R.id.btn)  
    void myClick(){  
        MyFragment fragment = new MyFragment_();  
        Bundle bundle = new Bundle();  
        bundle.putString("hello","...");  
    //設置傳遞的參數  
        fragment.setArguments(bundle);  
        FragmentTransaction transaction = getFragmentManager().beginTransaction();  
        transaction.add(R.id.content, fragment);  
        transaction.commit();  
    }  
}

myfragment接收一個hello的參數

@EFragment(R.layout.layout_myfragment)  
public class MyFragment extends Fragment{  
  
  
    @FragmentArg("hello")  
    String params;  
  
    @AfterViews  
    void init(){  
        Toast.makeText(getActivity(), params, Toast.LENGTH_SHORT).show();  
    }  
  
}  

9.@StringRes(R.string.xxx):資源文件註解,相當於在strings.xml文件中設置了

     <string name="app_name">My Application</string>

10.@EBean可以用來註解類

@EBean
public class MyClass {
 
}

也可以用來註解接口括號中必須爲該接口下確定的子類

@Bean(MyImplementation.class)
     MyInterface myInterface;

11.在普通類中注入跟環境:@RootContext用來注入當前類的一個服務,列入需要的context、service等

@EBean
public class MyClass {
 
  @RootContext
  Context context;
 
  // Only injected if the root context is an activity
  @RootContext
  Activity activity;
 
  // Only injected if the root context is a service
  @RootContext
  Service service;
 
  // Only injected if the root context is an instance of MyActivity
  @RootContext
  MyActivity myActivity;
 
}
 

12.@afterinject該註解將會在該類創建初期做一些操作

@AfterInject
  public void doSomethingAfterInjection() {
    // notificationManager and dependency are set
  }

13.若該類是一個單例模式,則可以如下聲明爲單例

@EBean(scope = Scope.Singleton)
public class MySingleton {
 
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章