2012-07-20 16 views
5

Adesso ho letto molto su questo argomento, e ho trovato esempi di come con le nuove istruzioni di commutazione di ADT devono essere fornite espressioni costanti, ma nulla è menzionato su @Inject.Attributo di annotazione che non accetta la mia variabile

Ecco un esempio del mio codice problematico.

import roboguice.inject.InjectView; 
public abstract class YpListActivity extends GuiceListActivity 

    @InjectView(R.id.btnSearch) 
    Button btnSearch; 
    @InjectView(R.id.btnSpeech) 
    View btnSpeech; 
    @InjectView(R.id.etWhat) 
    EditText etWhat; 
    @InjectView(R.id.etWhere) 
    EditText etWhere; 
    @InjectView(R.id.tvIn) 
    TextView tvIn; 
    @InjectView(R.id.tvLocation) 
    TextView tvLocation; 
    @InjectView(R.id.tvCustom) 
    private ToggleButton tvCustom; 
    @InjectView(R.id.infoButton) 
    private ImageView iconButton; 

Ogni volta che provo e utilizzare qualcosa come @injectView (R.id. *), eclissi genera l'errore:

"Il valore per l'annotazione degli attributi InjectView.value deve essere un'espressione costante."

ho anche provato a cambiare a questo:

 private static final int btnsrch = new Integer(R.id.btnSearch); 

    @InjectView(btnsrch) 
    TableRow btnSearch ; 

Come viene "btnsrch" Non un'espressione costante ??

Qualcuno ha qualche idea su come risolvere questo problema?

+0

Cambia semantica Java, credo. –

+3

Vedere [RoboGuice bug # 139] (http://code.google.com/p/roboguice/issues/detail?id=139) per ulteriori informazioni. [Gli ID dei progetti di libreria non sono definitivi a partire da ADT 14+] (http://tools.android.com/tips/non-constant-fields). – JohnnyLambada

risposta

0

Rimuovere "privato" e dovrebbe funzionare correttamente.

Problemi correlati