2011-08-17 88 views
2

的東西,我認爲是如此簡單,我很驚訝有愈演愈烈這樣一個奇怪的錯誤...讀取XML字符串從Java

在我的節目,我有與它5個按鈕的佈局。當您按下按鈕時,它會啓動電話的撥號程序,並在其中預先加載號碼。我之前沒有遇到過這個問題,但之後我嘗試將電話號碼移動到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文件中讀取。有任何想法嗎?

+2

「他們兩個都不工作」並沒有給我們太多的信息。發生了什麼?你有例外嗎?執行時「R.string.police2_phone」的價值是什麼?基本上這裏有一堆缺少的診斷信息...... – 2011-08-17 12:45:38

+0

正如我所提到的,我在撥號程序中給了我一個隨機的7位數字號碼。它給我的電話號碼是'213-096-8576',與實際電話號碼相差很遠,即'978-937-xxxx'。不管我如何描述上述的Java/XML文件,他們都給我隨機的7位數字。 – Mxyk 2011-08-17 12:49:02

回答

8

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

0

如果你想他們已經準備好使用的解析器像

+0

這個世界不需要另一個Java XML解析器 – 2011-08-17 12:50:52

+0

是的,但它很容易寫你自己的,如果它只是像這種情況下使用很少=) – jDourlens 2011-08-17 12:53:52

0

如果要使用R.string.xxx,則需要將字符串值放入/res/values/文件夾中名爲strings.xml的文件中。