Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 应用程序更新后加载错误颜色的应用程序_Android_Android Layout - Fatal编程技术网

Android 应用程序更新后加载错误颜色的应用程序

Android 应用程序更新后加载错误颜色的应用程序,android,android-layout,Android,Android Layout,我在Android应用程序中加载资源(颜色)时遇到了一个非常奇怪的问题。 开始时,请介绍一下环境: android { compileSdkVersion 27 buildToolsVersion '26.0.2' defaultConfig { applicationId appPackageName minSdkVersion 15 targetSdkVersion 27 versionCode verCode versionName v

我在Android应用程序中加载资源(颜色)时遇到了一个非常奇怪的问题。 开始时,请介绍一下环境:

android {
  compileSdkVersion 27
  buildToolsVersion '26.0.2'

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

    multiDexEnabled  true
    ...
}
我有一个代码版本为40的应用程序,新安装后一切正常。在几次提交之后,我已经准备好将代码版本设置为41的构建。这个构建也可以正常工作。奇怪的事情始于我将应用程序从40更新到41。在应用程序中的一个地方执行此操作后,我注意到从资源加载的颜色不正确

以下是我如何设置文本颜色(ArrayAdapter)的行:

我做了一些调查,发现在应用程序更新之后,对于相同的资源,我得到了错误的颜色标识符(放在R.java文件中):

新安装41(正常):

从40更新到41(错误):

有什么想法或提示我如何解决这个问题

编辑(更多信息)

通常,值是属性设置为颜色资源id的领域对象的实例:

public Integer getColor() {
    return color;
}
下面是如何设置此颜色的示例:

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

这是因为您正在将Android Studio自动生成的颜色id存储在
R.java
类中。每当您在资源中添加视图、字符串等时,R.java就会用新的id集进行更新

正在从颜色id返回颜色的值,该值可能与更新资源文件时的id不同:

(上下文,int-id)
返回与特定资源ID关联的颜色

从M开始,返回的颜色将为指定上下文的主题设置样式

当您调用以下代码时:

realm.copyToRealmOrUpdate(new Setting(context.getString(R.string.status_pending), "pending", R.color. my_text_font_color));
您保存的是颜色资源id而不是颜色值


因此,您需要保存颜色值或颜色资源的名称。

什么是
value.getColor()
为什么不
R.color.someColor
?@Yupi我在我的初始帖子中添加了更多信息。
public Integer getColor() {
    return color;
}
realm.copyToRealmOrUpdate(new Setting(context.getString(R.string.status_pending), "pending", R.color. my_text_font_color));
realm.copyToRealmOrUpdate(new Setting(context.getString(R.string.status_pending), "pending", R.color. my_text_font_color));