2015-07-28 7 views
9

Android studio si lamenta quando restituisco un normale int e provo a usare quell'int come parametro di input a un int annotato in Visibility. Come posso annotare il mio metodo in modo che AS non produca questo avviso? Vedo che View ha un'interfaccia pubblica "Visibilità" ma per qualche strano motivo non posso fare riferimento allo android.view.View.Visibility dal mio progetto, anche se è pubblico. Perché?Come posso annotare il mio metodo per restituire un tipo di visibilità int in Android?

mio metodo:

public static int booleanToVisibleOrInvisible(boolean visible) { 
    return visible ? View.VISIBLE : View.INVISIBLE; 
} 

Che cosa ho bisogno:

@android.view.View.Visibility // <- does not compile 
public static int booleanToVisibleOrInvisible(boolean visible) { 
    return visible ? View.VISIBLE : View.INVISIBLE; 
} 

risposta

17

ma per qualche strano motivo non posso riferire android.view.View.Visibility dal mio progetto, anche se si tratta di pubblico.

Date un'occhiata nel codice sorgente, vedrete che questa annotazione è 'annotato' con il tag @hide:

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

@hide tag viene utilizzato per escludere il pacchetto/classe/metodo annotato/etc dal file android.jar quindi non è disponibile in fase di compilazione. Dubito che tu possa in qualche modo usare questa stessa annotazione nel tuo codice a meno che i tecnici Google rimuovano il tag @hide dai sorgenti.
È possibile sopprimere questo avviso con il commento //noinspection ResourceType.

+1

Wow ... Sfocare la linea tra codice e commenti lì Google. Grazie per il testa a testa. PS: ho dovuto scrivere '@SuppressWarnings (" ResourceType ")' per farlo funzionare. PPS: Ah, l'altro funziona in linea. – Nilzor

Problemi correlati