1

這裏是我的代碼@ViewById不起作用

活動:

@RoboGuice 
@EActivity(R.layout.result_page) 
public class ResultActivity extends SherlockListActivity implements ActionBar.OnNavigationListener{ 
    @ViewById TextView src; 
    @ViewById TextView dest; 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     if(src==null || dest==null) 
      Toast.makeText(this, "@ViewById does not work", Toast.LENGTH_SHORT).show(); 

     //More Code here 

    } 
} 

佈局的一部分: - 注:有很多嵌套佈局 - 只顯示佈局文件的一部分

<RelativeLayout 
        android:id="@+id/topRight" 
        android:layout_toRightOf="@id/topLeft" 
        android:layout_height="wrap_content" 
        android:layout_width="0px" 
        android:layout_weight="0.8"> 
       <TextView 
         android:id="@+id/src" 
         android:layout_alignParentLeft="true" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:textColor="#3399FF" 
         android:maxLines="1" 
         android:paddingLeft="8dp" 
         android:textSize="16dp"/> 
</RelativeLayout> 

<RelativeLayout 
        android:id="@+id/bottomRight" 
        android:layout_toRightOf="@id/bottomLeft" 
        android:layout_height="wrap_content" 
        android:layout_width="0px" 
        android:layout_weight="0.8"> 
       <TextView 
         android:id="@+id/dest" 
         android:layout_alignParentLeft="true" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:paddingLeft="8dp" 
         android:maxLines="1" 
         android:textColor="#3399FF" 
         android:paddingBottom="10dp" 
         android:textSize="16dp"/> 
</RelativeLayout> 

我想在德州做的setText() tViews。我想知道我的實現接口(我需要)使@ViewById發生故障。或者我錯過了什麼?

回答

6

Spikas回覆不正確,當您在android註釋中使用@ViewById時,您不必使用findViewById。問題是視圖還沒有被注入到onCreate中。嘗試在用@AfterViews註釋的方法中訪問它們,這會保證在注入視圖後執行。

例如:

@AfterViews 
void checkViews(){ 
if(src!=null && dest!=null) 
     Toast.makeText(this, "@ViewById does work!", Toast.LENGTH_SHORT).show(); 
}