2011-01-07 5 views
1

「資格情報」というプリファレンスグループがあり、資格情報が有効かどうかに基づいてそのヘッダーの色を変更したいと思います。私は自分の資格情報の検証が終わっていたら、私は私の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 ... 
} 

を起動したときに

が、私はそれをつかんで資格情報の項目への参照を保持し、私は正しい描画可能にロードすることになっているupdateCredentialsBarColorと呼ばれる機能を実行し、資格情報の優先順位を適切な色に設定します。色を変えようとすると何も起こりません。私はビューを間違って取得していますか?そうであれば、それを取得する適切な方法は何ですか?

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); 
    } 
} 

答えて

1

ええと、それは良いですね。 updateCreditialsBarColor()が呼び出されますか?結局のところ、メソッド名AFAICTにはタイプミスがあります。

また、その方法でいくつかのログ情報をダンプし、階層ビューアであなたのアクティビティを調べた結果と比較して、自分があなただと思っているかどうかを確認することができます。

Preferenceのカスタムサブクラスを作成することも考えられます。これは、この動作をカプセル化しています。

関連する問題