为什么 getResources().getString() return 为空?

Why getResources().getString() return null?

每当我打电话时总是得到 NullPointerException:

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

我在 Activity 中从 DialogFragment 调用了它。我也尝试使用 getActivity(),但这对我也不起作用。有人知道这个问题吗?

试试这个:

如果你把它写在片段中:

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

如果你把这个写在 activity:

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

这只是一个假设,但大多数情况下,如果有人遇到此错误,他们在放置代码的位置或调用代码的时间上犯了错误。例如,如果您在 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);
    }
}

试试这个。

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);
...............
  }
}

希望对您有所帮助!