2015-09-29 7 views
5
@EActivity(R.layout.data_layout) 
    public class MyActivity extendsActivity 
    {  
    @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); 
    } 
} 

"nameField" в loadData() равно null. В то же время, если я делаю это в LoadData()Невозможно получить @ViewById для работы внутри @EBean

nameField = (TextView)((Activity)context).findViewById(R.id.name_field);  it's all good. So the view isdefinitely there. Also if I call this method from a retrofit callback 

(то есть после того, как задержка) «имя» является автоматической заселенно.

Я использую Android аннотаций 3.3.2

ответ

1

Я не знаю, почему это не работает, но если вам это нужно просто работает, решение довольно легко:

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

@EBean 
public class MyEbean { 
    @ViewById Button previewButton; 

    @AfterViews void init() { 
     previewButton.setText("Blah"); 
    } 
} 
0

-Agree с выше ответ

ключевой момент является ....

@AfterViews void init() { 
    previewButton.setText("Blah"); 
} 
  • Это показывает, что представления выбраны так, что вы не получите нулевой указатель.