2012-06-20 38 views
1

我使用這個代碼從自己的價值觀的文件夾拉我的字符串數組:安卓:從值傳遞字符串數組的.java

String achievementNames[] = getResources().getStringArray(R.array.achieveString); 
    String achievementDescriptions[] = getResources().getStringArray(R.array.achieveDescript); 

然而,當我運行它,它給了我一個空指針異常這些代碼行。有沒有更好的方法來拉字符串數組或在我的代碼中有錯誤?

+1

您在哪裏放置該語句?在宣言中? – 2012-06-20 00:17:09

回答

2

你不應該叫getResources()除非onCreate()回調已被觸發。

public class StackStackActivity extends Activity 
{ 

    String[] myArray = getResources().getStringArray(R.array.glenns); // This returns null 

    public StackStackActivity() 
    { 

     myArray = getResources().getStringArray(R.array.glenns); // This returns null also 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     myArray = getResources().getStringArray(R.array.glenns); // Returns an array from resources 
    } 
} 
+1

+1用於識別最有可能是OP問題的來源。但是,應該明確的是在檢索資源之前不需要調用'setContentView'。事實上,有時候有理由推遲'setContentView'的調用,直到'onCreate'後面。 –

+0

啊,你有一個觀點:) – 2012-06-20 00:38:06

0

確保您將一個Context對象傳遞到您調用此方法的任何位置(因爲我的猜測是getResources()正在返回null)。有了這個Context對象,你可以打電話,

context.getResources().getStringArray(...); 
+0

同樣的錯誤依然存在。任何其他想法? – rphello101

+0

是的...發佈更多信息。即圍繞這兩條線的代碼,logcat,發生'NullPointerException'的行號等等。根據您提供給我們的信息,我們沒有太多可以告訴的內容。 –