2015-09-29 11 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); 
    } 
} 

loadData()内の "nameField"はnullです。 )私はloaddataの(内部でこれを行う場合は、同時に@EBean内で@ViewByIdを動作させることができません

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"); 
} 
  • これは、ビューがフェッチされているため、NULLポインタを取得しないことを示しています。
関連する問題