为什么getResources()。getString()返回null?

时间:2015-08-18 11:44:47

标签: android android-fragments nullpointerexception android-resources android-dialogfragment

每当我打电话时,我总是会NullPointerException

getApplicationContext().getResources().getStringArray(R.array.days);

我是在DialogFragment的{​​{1}}中拨打的。我也尝试使用Activity,但这对我也没有用。有没有人对这个问题有任何想法?

3 个答案:

答案 0 :(得分:7)

试试这个:

如果你用片段写这个:

String[] days = getActivity().getResources().getStringArray(R.array.days);

如果你在活动中写这个:

String[] days = this.getResources().getStringArray(R.array.days);

答案 1 :(得分:2)

这只是一个假设,但主要是如果有人得到这个错误,他们会在放置代码或调用代码时出错。例如,如果您在onCreate()之前调用它:

public class YourActivity extends Activity {

private String foo = "foo";
private String[] yourArray = getResources().getStringArray(R.array.yourArray);

    public void onCreate(Bundle savedInstanceState){
        ...
    }
}

这将导致NullPointerException。相反,你必须这样称呼它:

public class YourActivity extends Activity {

private String foo = "foo";
private String[] yourArray;

    public void onCreate(Bundle savedInstanceState) {
        setContentView(R.layout.yourLayout);
        yourArray = getResources().getStringArray(R.array.yourArray);
    }
}

答案 2 :(得分:1)

试试这个。

public class YourActivity extends Activity{
Context mContext;

public void onCreate(Bundle savedInstanceState){
       setContentView(R.layout.yourLayout);   
       mContext = this;                  
}

class DialogFragment{
 String[] days = mContext.getResources().getStringArray(R.array.days);
...............
  }
}

我希望它有所帮助!