gpt4 book ai didi

android - @EBean 内部的@ViewById 使用android 注释

转载 作者:行者123 更新时间:2023-11-29 16:02:07 24 4
gpt4 key购买 nike

无法让@ViewById 在@EBean 中工作。

@EActivity(R.layout.data_layout)
public class MyActivity extends Activity {
@Bean
MyEbean bean;

@AfterViews
public void setupView() {
bean.loadData("Test name");
}
}

@EBean
public class MyEbean {
@RootContext
context;

@ViewById(R.id.name_field)
TextView nameField;

public void loadData(String name) {
nameField.setText(name);
}
}

loadData() 中的“nameField”为空。同时,如果我在 loadData() 中执行此操作

 nameField = (TextView)((Activity) context).findViewById(R.id.name_field);

一切都很好。所以观点肯定是存在的。此外,如果我从 retrofit 回调(即延迟后)调用此方法,则会自动填充“名称”。我在那里做错了什么吗?

我正在使用 Android Annotations 3.0.1。

最佳答案

@EBean 注释类不应该做任何与 View 相关的工作,因为它们可以注入(inject)每个增强类(即用 @EService 注释,@EBean, @EActivity, ...).

如果您能够在通过 @RootContext 检索的上下文中执行 findViewById,那只是因为 - 在这种情况下 - 给予 bean 的上下文是 Activity 。但是根据注入(inject) bean 的位置,它也可以是 ApplicationContext 或链接到另一个 Activity/布局的上下文。

关于android - @EBean 内部的@ViewById 使用android 注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23449883/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com