Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can't get @ViewById to work inside an @EBean

  @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" in loadData() is null. At the same time if I do this inside loadData()

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

(i.e. after a delay) "name" is auto populated.

I'm using Android Annotations 3.3.2

like image 209
Query Avatar asked Nov 10 '22 04:11

Query


1 Answers

I don't know the reason why it doesn't work but if you need it just works, the solution is pretty easy:

@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");
    }
}
like image 170
Slava Avatar answered Nov 14 '22 22:11

Slava