Domanda

Ho un gruppo di preferenza chiamato "credenziali" e mi piacerebbe cambiare il colore di quel colpo di testa a seconda che le credenziali sono valide o meno.

I mantenere un riferimento alla voce delle credenziali afferrandolo quando inizio la mia PreferenceActivity

// ... code ...
public enum CredentialsInfo {
    VALID, INVALID, UNKNOWN
}

private Preference credentials;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    addPreferencesFromResource(R.xml.my_preferences);

    credentials = findPreference(getString(R.string.credentials));
    // ... etc ...
}

Una volta che mi sono fatto verificando le mie credenziali ho eseguito una funzione chiamata updateCredentialsBarColor che si suppone per caricare il drawable corretta e impostare le credenziali Preferenza per il colore appropriato. Anche se quando provo a cambiare il colore non succede nulla. Mi appare la vista in modo non corretto, e se sì, qual è il modo corretto per farlo?

private void updateCreditialsBarColor(CredentialsInfo state) {
    Drawable background = null;
    switch(state) {
    case VALID:
        background = getResources().getDrawable(R.drawable.credentials_state_valid);
        break;
    case INVALID:
        background = getResources().getDrawable(R.drawable.credentials_state_invalid);
        break;
    case UNKNOWN:
    default:
        background = getResources().getDrawable(R.drawable.credentials_state_unknown);
        break;
    }
    if(background != null) {
        View credentialsView = credentials.getView(null, null);
        credentialsView.setBackgroundDrawable(background);
    }
}
È stato utile?

Soluzione

Um, che sembra buono. Sei sicuro updateCreditialsBarColor() viene chiamato? Dopo tutto, c'è un errore di battitura nel nome del metodo, AFAICT.

Si potrebbe anche scaricare alcune informazioni di registrazione in quel metodo e confrontarlo con i risultati dell'esame vostra attività in Hierarchy Viewer per vedere se stai ricevendo il View ti credi di essere.

Si potrebbe anche prendere in considerazione la creazione di una sottoclasse personalizzata di qualsiasi Preference questo è che incapsula questo comportamento.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top