compareToIgnoreCase不适用于Strings.xml

时间:2014-07-22 15:38:38

标签: android xml

在我的代码中,我有一个安装在设备上的所有应用程序的数组,我想在其中找到我正在运行的应用程序。为此,我编写了以下代码:

if (tmpPacs[I].packageName.compareToIgnoreCase("com.example.basiclauncher") == 0){
    launcherPosition = I;
}

此行非常有效,但是,我想将“com.example.basiclauncher”存储在 strings.xml 的字符串中,如下所示:

<string name="launcher_package">com.example.basiclauncher</string>

并将该行更改为:

if (tmpPacs[I].packageName.compareToIgnoreCase("@string/launcher_package") == 0){
    launcherPosition = I;
}

这不起作用, launcherPosition 在整个代码执行期间保持为0并且找不到正确的应用程序。当我恢复到第一行时,再次找到该应用程序。为什么是这样?我怎样才能使用strings.xml文件?

编辑:

我刚才意识到我正在尝试在我的java类中使用xml代码,这显然不会起作用。感谢所有快速回复, getPackageName()是一个更优雅的解决方案!

3 个答案:

答案 0 :(得分:2)

要从xml中检索字符串,您必须使用getResources().getString(R.string. launcher_package)。您还可以通过getPackageName()

检索包名称

答案 1 :(得分:2)

你需要做

tmpPacs[1].packageName.compareToIgnoreCase(getResources().getString(R.string.launcher_package));

您拥有的代码实际上是将tmpPacs [I] .packageName与字符串&#34; @ string / launcher_package&#34;进行比较。而不是它引用的字符串资源。

答案 2 :(得分:1)

您无法使用"@string/launcher_package"

试试这个:

tmpPacs[I].packageName.compareToIgnoreCase(
              getResources().getString(R.string. 
                                        launcher_package))

希望这有帮助。