Extra

原文地址:
https://github.com/excilys/androidannotations/wiki/Extras#executing-code-after-extras-injection

@Extra

@Extra注释一个从Activity中启动意图中获取正确值的字段,例如:

@EActivity
public class MyActivity extends Activity {

  @Extra("myStringExtra")
  String myMessage;

  @Extra("myDateExtra")
  Date myDateExtraWithDefaultValue = new Date();

}

如果你不给@Extra注释的字段值赋值,那么这个字段值将直接使用被使用这个字段名称。比如:

@EActivity
public class MyActivity extends Activity {

  // The name of the extra will be "myMessage"
  @Extra
  String myMessage;
}

请注意,您可以使用意图构建器传递Extra的值。

MyActivity_.intent().myMessage("hello").start() ;

处理onNewIntent()

AndroidAnnotations会覆写setIntent()方法,并当你调用setIntent()方法时会根据给定的意图自动设置extra的值。
这允许你从onNewIntent()方法中通过调用setIntent()方法自动注入extra的值。

@EActivity
public class MyActivity extends Activity {

    @Extra("myStringExtra")
    String myMessage;

    @Override
    protected void onNewIntent(Intent intent) {
        setIntent(intent);
    }
}

在注入extras之后执行代码

如果你需要执行注入extras之后的代码,你应该使用@AfterExtras注释一些方法。

@EActivity
public class MyClass {

  @Extra
  String someExtra;

  @Extra
  int anotherExtra;


  @AfterExtras
  public void doSomethingAfterExtrasInjection() {
    // someExtra and anotherExtra are set to the value contained in the incoming intent
    // if an intent does not contain one of the extra values the field remains unchanged
  }

}

警告

如果父类和子类有@AfterViews,@AfterInject或@AfterExtras名称相同的带注释的方法,生成的代码将会有BUG。查看更多细节问题# 591
同时,当我们调用那些@AfterViews、@AfterInject、@AfterExtras注解的方法时会有一个调用顺序,但是如果@AfterView、@AfterInject、@AfterExtras 注解的方法是同名的,那就不能确保这几个方法的调用顺序了 ,请看( issue #810)。
关于这些注解的方法调用顺序,你可以看我的这篇博客译文:@AfterXXX 调用顺序

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值