【问题标题】:Reading XML Strings from Java从 Java 中读取 XML 字符串
【发布时间】:2011-08-17 12:43:31
【问题描述】:

对于一些我认为如此简单的事情,我很惊讶会遇到如此奇怪的错误......

在我的程序中,我有一个带有 5 个按钮的布局。当您按下一个按钮时,它会启动手机的拨号器,其中预装了号码。我以前对此没有任何问题,但后来我尝试将电话号码移动到 XML 文件中的字符串,该 XML 文件放入名为“phone.xml”的 /res/values 文件夹中。这是我的 Java 文件代码的一部分:

    public void launchDialer(String number){
        String numberToDial = "tel:"+number;
        startActivity(new Intent(Intent.ACTION_DIAL, Uri.parse(numberToDial)));
    }

    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.police_button1:
            launchDialer(Integer.toString(R.string.police1_phone));
            break;
        case R.id.police_button2:
            launchDialer("" + R.string.police2_phone);
            break;
        case R.id.police_button3:
            launchDialer("" + R.string.police3_phone);
            break;
        case R.id.police_button4:
            launchDialer("" + R.string.police4_phone);
            break;
        case R.id.police_button5:
            launchDialer("" + R.string.police5_phone);
            break;
        }
    }

这是我的 phone.xml 文件:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="police1_phone">"555-555-5555"</string>
    <string name="police2_phone">1-800-555-5555</string>
    <string name="police3_phone">555-555-5555</string>
    <string name="police4_phone">555-555-5555</string>
    <string name="police5_phone">555-555-5555</string>
</resources>

正如您在 Java 文件中看到的那样,我为 Police1_phone 和 Police2_phone 尝试了不同的方法,但它们都不起作用。您还可以看到我尝试在 xml 文件中的 1 个电话号码周围加上引号,但它仍然不起作用。我的输出一直是一些随机的 7 位数字,甚至与我希望它打印的电话号码都不接近。此 Java 代码有效:

launchDialer("555-555-5555");

但是,我需要它来读取 XML 文件。有什么想法吗?

【问题讨论】:

  • “他们都没有工作”并没有给我们太多信息。发生了什么?你有例外吗? R.string.police2_phone 在执行时的值是多少?基本上这里缺少一堆诊断......
  • 正如我所提到的,我在拨号器中给了我一个随机的 7 位数字。它给我的号码是“213-096-8576”,与实际号码“978-937-xxxx”相差甚远。如上所述,无论我如何措辞 Java/XML 文件,它们都给了我随机的 7 位数字。

标签: java android xml xml-parsing


【解决方案1】:

也许我不明白,但getString(R.string.police1_phone) 必须工作。

【讨论】:

  • 我不知道为什么我的任何其他尝试都不起作用,但这有效。谢谢!
  • 因为您使用的是资源的 id(在 R 类中生成),而不是值本身。
  • 是的,@Adinia 是对的。 Id 只是一个整数,您可以使用它来加载资源。 ID 由资源编译器生成,因此它们只是您的随机数。
【解决方案2】:

如果你希望他们准备好使用解析器,比如

【讨论】:

  • 世界不需要另一个 Java XML 解析器
  • 是的,但如果它只是像这种情况下很少使用,那么编写自己的很容易 =)
【解决方案3】:

如果您想使用R.string.xxx,那么您需要将您的字符串值放入您的/res/values/ 文件夹中名为strings.xml 的文件中。

【讨论】:

  • 我会,但是我的字符串文件夹中充满了一堆其他字符串(这个项目比较大;这个电话部分是项目的一小部分)。我希望它在一个单独的本地文件中的原因是因为最终我想继续从在线 xml 文件中解析电话号码,如果这有意义的话。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-13
  • 1970-01-01
  • 2011-04-24
  • 2013-08-28
  • 2012-09-09
  • 1970-01-01
  • 2019-04-14
相关资源
最近更新 更多