2015-09-29 13 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" in loadData() è null. Allo stesso tempo, se faccio questo all'interno loadData()Impossibile ottenere @ViewById per lavorare all'interno di un @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 

(vale a dire dopo un ritardo) "nome" è auto popolata.

che sto usando Android 3.3.2 NOTE

risposta

1

Non so il motivo per cui non funziona, ma se ne avete bisogno funziona, la soluzione è piuttosto semplice:

@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 con risposta di cui sopra

Il punto chiave è ....

@AfterViews void init() { 
    previewButton.setText("Blah"); 
} 
  • questo mostra che le viste vengono recuperate in modo da non ottenere il puntatore nullo.