2017-11-24 10 views
0

私のAndroidアプリケーションでは、リソースの読み込み(カラー)に本当に奇妙な問題があります。アプリケーションのアップデート後に間違った色をロードする

android { 
    compileSdkVersion 27 
    buildToolsVersion '26.0.2' 

    defaultConfig { 
    applicationId appPackageName 
    minSdkVersion 15 
    targetSdkVersion 27 
    versionCode verCode 
    versionName verName 

    multiDexEnabled true 
    ... 
} 

私はコードのバージョン40を使用してアプリケーションを持っている、と新鮮なすべてのものをインストールした後にOKです:最初の環境に関するいくつかの紹介で 。わずかなコミットの後、41に設定されたコードバージョンでビルドを準備しました。このビルドは問題なく動作します。私が気づいたアプリケーションの1つの場所でこの操作が行われた後、リソースから読み込まれた色が正しく表示されません。私はR.javaに配置された(アプリケーションを更新した後、私は間違った色の識別子を取得することを、いくつかの調査を行い、見つけた

holder.titleTextView.setTextColor(ContextCompat.getColor(context, value.getColor())); 

:ここ

は、私はテキストの色(ArrayAdapter)を設定していますどのラインであります同じリソース用のファイル):

フレッシュインストール41(OK):40から41へ

7F06007F => public static final int my_text_font_color=0x7f06007f; 

アップデート(WRONG):

7F060082 => public static final int my_window_color=0x7f060082; 

この問題を解決する方法はありますか?

編集(詳細)

一般色リソースIDに設定プロパティを持つレルムオブジェクトのインスタンスである:ここ

public Integer getColor() { 
    return color; 
} 

は、この色が設定されている方法の例です。

realm.copyToRealmOrUpdate(new Setting(context.getString(R.string.status_pending), "pending", R.color. my_text_font_color)); 
+0

「値」とは何ですか。getColor() 'なぜ' R.color.someColor'ですか? – Yupi

+0

@Yupi私は最初の投稿にさらに情報を追加しました。 – Grzegorz

答えて

1

これは、auto-geである色IDを保存しているためですAndroidスタジオR.javaクラスのnerated。あなたのリソースにビューや文字列などを追加すると、R.javaは新しいidのセットで更新されます。
は、関連付けられた色を返します

getColor(コンテキストコンテキスト、int型のID):

ContextCompat.getColor(Context context, int id)おそらく色IDから色の値を返すことは、あなたのリソースファイルを更新するたびに異なるIDであります特定のリソースID

Mからは、返された色は指定されたContextのテーマに合わせてスタイルされます。

次のコードを呼び出す:あなたはカラーリソースIDない色の値を保存している

realm.copyToRealmOrUpdate(new Setting(context.getString(R.string.status_pending), "pending", R.color. my_text_font_color)); 

を。

したがって、カラー値を保存するか、カラーリソースの名前を保存する必要があります。

関連する問題