2013-03-06 11 views
11

Quando provo a creare il mio progetto Android in IntelliJ ottengo errori su ogni istruzione di commutazione che i casi utilizzano Id's fuori dal R.java.IntelliJ/Android -> "java: espressione costante richiesta" sul caso R.id.viewId

Esempio:

switch (item.getItemId()) { 

    case android.R.id.home: 
    NavUtils.navigateUpTo(this, DashboardActivity.upIntent(this)); 
    return true; 

    case R.id.orders_options_add: 
    handleAddItem(); 
    return true; 

    case R.id.orders_options_reorder: 
    handleReorder(); 
    finish(); 
    return true; 
} 

Qualcuno sa come risolvere questo problema?

+1

Controllare in modo da non aver ottenuto errate importazioni R nella classe. – kaderud

risposta

10

Gli ID di risorsa non sono costanti in un progetto di libreria dalla versione 14 di ADT, quindi non è possibile utilizzarli nell'istruzione switch. Basta usare if() {} else if() {} ... invece.

È possibile trovare informazioni più dettagliate here.

+1

Conta solo per le risorse che non vengono create dalla propria app. – keyboardsurfer

+0

no, conta per tutte le risorse create in un progetto di libreria –

+7

Sei ** sbagliato **. E dice chiaramente più volte in quel link che è solo collegato a un progetto ** library **. – kaderud

Problemi correlati