2015-06-17 36 views
7

stavo scrivendo una funzione che restituisce un visibilità - ma ho correttamente ottengo:funzione che restituisce visibilità

Must be one of: View.VISIBLE, View.INVISIBLE, View.GONE less...

per questo codice:

private int getVisibilityForGlobalAndLocal(final boolean global, final boolean local) { 
    if (global) { 
     return View.GONE; 
    }     
    return local ? View.VISIBLE : View.INVISIBLE; 
} 

quando si utilizza in questo modo:

view.setVisibility(getVisibilityForGlobalAndLocal(true,false)); 

Sfortunatamente l'annotazione @Visibility è nascosta in Visualizza:

/** @hide */ 
@IntDef({VISIBLE, INVISIBLE, GONE}) 
@Retention(RetentionPolicy.SOURCE) 
public @interface Visibility {} 

Ora posso solo copiare questa parte (funziona) ma ci si sente male. C'è una soluzione più elegante che mi manca qui? Devo archiviare questo come un bug?

+1

Si può essere un po 'più chiaro su quello che sta accadendo e dove stai ottenendo un bug? Il codice mi sembra perfettamente legale. Per quanto riguarda un'interfaccia Visibility, non esiste una cosa del genere. Le 3 visibilità sono costanti e vengono trattate come intere in tutto il framework. –

+0

Aggiunto qualche dettaglio – ligi

+0

è un errore di filaccia? – njzk2

risposta

5

Sarebbe sicuramente bello poter usare l'annotazione di @Visibility ma sembra che non possiamo al momento.

Nel frattempo è possibile aggiungere i @SuppressWarnings ("ResourceType") annotazione sopra il metodo in cui si chiama setVisibility di sopprimere l'errore pelucchi

@SuppressWarnings("ResourceType") 
public void myMethod() 
{ 
    view.setVisibility(getVisibilityForGlobalAndLocal(true,false)); 
} 
+0

thanks - upvoted - ma odio davvero disabilitare questo - penso che preferisco quindi copiare l'annotazione – ligi

+0

Una cosa strana che ho visto. Ho creato la mia annotazione Visibility che è esattamente la stessa di Android.view.View, tuttavia lint non riesce con: errore: Deve essere uno tra: 0, 4, 8 [WrongConstant] . SetCenterTextVisibility (View.INVISIBLE); –

+2

Se vuoi usarlo in un metodo più grande che fa più cose, puoi aggiungere il commento '// noinspection ResourceType' appena sopra la riga dove' view.setVisibility (getVisibilityForGlobalAndLocal (true, false)); '. In questo modo non si sopprime l'avviso per l'intero metodo :) –

Problemi correlati