2013-03-01 19 views
5

Sto cercando di esportare l'SDK Android di Facebook come JAR da utilizzare nel mio progetto.Come caricare dinamicamente la risorsa R.styleable?

Ciò richiede il caricamento dinamico di tutte le risorse.

Ad esempio, devo apportare modifiche simile a questo:

//findViewById(R.id.com_facebook_login_activity_progress_bar).setVisibility(View.VISIBLE); 
int viewID = getResources().getIdentifier("com_facebook_login_activity_progress_bar", "id", getPackageName()); 
findViewById(viewID).setVisibility(View.VISIBLE); 

La linea commentato mostra l'originale, e le 2 linee seguenti mostrano il cambiamento che di caricare la stessa risorsa dinamicamente.

L'SDK di Facebook dichiara una risorsa R.styleable e non riesco a capire come caricarlo in modo dinamico. Ecco il codice originale:

private void parseAttributes(AttributeSet attrs) { 
    TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.com_facebook_profile_picture_view); 
    setPresetSize(a.getInt(R.styleable.com_facebook_profile_picture_view_preset_size, CUSTOM)); 
    isCropped = a.getBoolean(R.styleable.com_facebook_profile_picture_view_is_cropped, IS_CROPPED_DEFAULT_VALUE); 
    a.recycle(); 
} 

Poi, nel attrs.xml, viene dichiarato quanto segue:

<declare-styleable name="com_facebook_profile_picture_view"> 
     <attr name="preset_size"> 
      <!-- Keep in sync with constants in ProfilePictureView --> 
      <enum name="small" value="-2" /> 
      <enum name="normal" value="-3" /> 
      <enum name="large" value="-4" /> 
     </attr> 
     <attr name="is_cropped" format="boolean" /> 
    </declare-styleable> 

Come posso caricare questa risorsa in modo dinamico, (ad esempio, sostituire il riferimento R.styleable)?

+1

vedere [Accesso risorse programatically] (http://stackoverflow.com/questions/13816596/accessing- declare-styleable-resources-programatically) post forse ti aiuta a risolvere il problema corrente –

+0

Impressionante, grazie per la rapida risposta .. Questo era esattamente ciò di cui avevo bisogno. Se invii una risposta, la segnerò! – ch3rryc0ke

risposta

3

Sto rispondendo alla domanda qui nel caso in cui qualcuno stia specificatamente cercando di esportare l'SDK di Facebook come un barattolo.

ho usato la funzione descritta nella risposta a questa domanda: Accessing <declare-styleable> resources programatically

private void parseAttributes(AttributeSet attrs) { 
    int attrArray[] = StyleableHelper.getResourceDeclareStyleableIntArray(getContext(), "com_facebook_profile_picture_view"); 
    //TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.com_facebook_profile_picture_view); 
    TypedArray a = getContext().obtainStyledAttributes(attrs, attrArray); 

    setPresetSize(a.getInt(0, CUSTOM)); 
    isCropped = a.getBoolean(1, IS_CROPPED_DEFAULT_VALUE); 
    //setPresetSize(a.getInt(R.styleable.com_facebook_profile_picture_view_preset_size, CUSTOM)); 
    //isCropped = a.getBoolean(R.styleable.com_facebook_profile_picture_view_is_cropped, IS_CROPPED_DEFAULT_VALUE); 
    a.recycle(); 
} 
Problemi correlati