AndroidAnnotations注解框架之@Activity(三)

AndroidAnnotations是一个能够让你快速进行Android开发的开源框架,它能让你专注于真正重要的地方。使代码更加精简,使项目更加容易维护,它的目标就是“Fast Android Development.Easy maintainance”.
 

 

希望此篇能帮到大家,本系列教程目录:转载请链接并注明:转自 小树技术博客 .

AndroidAnnotations注解框架之介绍+配置(一) (飞机票)

[重要]关于Android Activity的介绍和用法:(飞机票)
 

 

1.使用 @EActivity 定义 Activity

@EActivity注释的Activity,其参数值必须是一个有效的布局资源id,将作为活动视图Content View的内容。

当然,你也可以不使用参数,让value为空,那么你就需要自己在onCreate()中进行视图的初始化

 

@EActivity(R.layout.main)
public class MyActivity extends Activity {

}
 

@EActivity
public class MyListActivity extends ListActivity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
}

}
 

2.注意事项

 

使用 @Activity 注解的 Activity ,与Fragment相同,都会由 AndroidAnnotations框架自动生成一个中间类,Activity_ ,这个类才是真正android系统识别
到和调用到的有内容的类,因此,任何跳转或者是注射,都应该使用这个类,例如:

@EActivity
public class MyActivity extends Activity {
// …
}

将在同一个包,但在另一个源文件夹下,产生以下子类

public final class MyActivity_ extends MyActivity {
// …
}

这个子类将行为添加到您的活动覆盖一些方法,例如onCreate(),委托调用父类。

因此,AndroidManifest.xml中,你必须在所有使用@注解的Activity上,添加下划线_,如:

<activity android:name=”.MyListActivity_” />

Q:如何启动一个带注释的activity?

A:

通常在安卓,你使用以下代码启动一个activity:

startActivity(this, MyListActivity.class);

但是,使用AA框架之后,你的启动代码就要改成:

startActivity(this, MyListActivity_.class);

AA也提供一个静态的助手,让你启动自动生成的activity:

// Starting the activity
MyListActivity_.intent(context).start();

// Building an intent from the activity
Intent intent = MyListActivity_.intent(context).get();

// You can provide flags
MyListActivity_.intent(context).flags(FLAG_ACTIVITY_CLEAR_TOP).start();

// You can even provide extras defined with @Extra in the activity
MyListActivity_.intent(context).myDateExtra(someDate).start();

你可以使用 startActivityForResult() 获取 activity 的返回值

MyListActivity_.intent(context).startForResult();