2012-06-20 36 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'的行号等等。根据您提供给我们的信息,我们没有太多可以告诉的内容。 –