2012-11-06 15 views
0

我正在使用以下代碼通過id查找資源;空指針試圖通過ID查找字符串時

setContentView(R.layout.golders); 
    for (int i=1; i<hm.size()+1;i++) 
     { 
      int id = getStringIdentifier("Bus"+i); 
      view = (TextView)findViewById(id); 
      view.setText(hm.get(i).toString()); 
     } 

getStringIdentifier()工作,但是當我嘗試設置文本我得到一個NullPointerException

我已使用setContentView專注於golders.xml文件,該文件有我想要更新的id

我已經嘗試清理項目,但那也沒有做任何事,任何想法?!謝謝!

編輯:

public int getStringIdentifier(String aString) 
    { 
     String packageName = "com.example.bustimetable.Robbos"; 
     int resId = getResources().getIdentifier(aString, "string", packageName); 
     return resId; 
     } 
+0

我們可以看到'getStringIdentifier'的代碼嗎?你說它正在工作,但如果它正常工作,'view'不會是'null'。 – Eric

+0

它返回一個數字,所以我推測它的工作?!抱歉! – r0bb077

+0

哪條線給你NPE?請發佈完整的堆棧跟蹤。 –

回答

1

getStringIdentifier(String)方法(從R.string東西)返回一個字符串ID。你需要一個新的方法,像getIdentifier(String),這將從R.id返回soemthing。我看不到XML,所以我不知道你的TextView的ID是什麼,但是...你會想驗證ID是,實際上,Bus_其中_是某個數字。

public int getIdentifier(String aString) 
{ 
    String packageName = "com.example.bustimetable.Robbos"; 
    int resId = getResources().getIdentifier(aString, "id", packageName); // Get from R.id, not R.string 
    return resId; 
} 
+0

完美,就是這樣!謝謝!! – r0bb077

0

問題是getStringIdentifier()正在爲字符串資源返回一個id。顯然,返回的id不是視圖資源的有效標識。即使是這樣,我也不知道如何保證你會得到你想要的觀點。你需要添加另一種方法來返回ID的視圖資源,或者修改你的ID,以便它可以爲字符串或視圖資源返回ID