2012-07-20 15 views
5

Iv'e leer mucho en este momento, y he encontrado ejemplos de cómo con sentencias switch el más reciente de ADT tienen que ser dada expresiones constantes, pero nada se menciona sobre todo @Inject.anotación no atribuye aceptar mi variable de

Aquí es un ejemplo de mi código problemático.

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; 

Cada vez que intento y usar algo como @injectView (R.id. *), eclipse tiros el error:

"El valor de atributo para la anotación InjectView.value debe ser una expresión constante."

incluso intentado cambiar a esto:

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

    @InjectView(btnsrch) 
    TableRow btnSearch ; 

¿Cómo se "btnsrch" no es una expresión constante ??

¿Alguien tiene alguna idea de cómo solucionar este problema?

+0

Cambiar la semántica de Java, supongo. –

+3

Consulte [RoboGuice bug # 139] (http://code.google.com/p/roboguice/issues/detail?id=139) para obtener más información. [Los ID de proyectos de la biblioteca no son definitivos a partir de ADT 14+] (http://tools.android.com/tips/non-constant-fields). – JohnnyLambada

Respuesta

0

Quitar "privado" y debería estar funcionando correctamente.

Cuestiones relacionadas