我的日历中有特定日期的事件列表。
public ArrayList<Event> eventDetails(int m, int d) {
ArrayList<Event> events = new ArrayList<Event>();
switch (m) {
case 1:
if (d == 1) {
events.add(new Event("Event in Date 1", null, null, null, null, null, null, null));
}
}
return events
}
我想将硬编码文本转换为我所做的字符串资源:
此:
events.add(new Event("Event in Date 1", null, null, null, null, null, null, null));
要:
events.add(new Event(getResources().getString(R.string.text1), null, null, null, null, null, null, null));
然而,问题是我在getResources().getString(R.string.text1)
得到了NullPointerException。
我意识到我必须传递上下文来获取String资源,所以:
_context.getResources().getString(R.string.text1)
但是,这仍然引发了NullPointerException。我宣布Context
是静态的,但它不起作用。
代码有什么问题?
代码:
public class CalendarEvents extends Activity {
private static Context _context;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.events);
_context = this.getApplicationContext();
}
public ArrayList<Event> eventDetails(int m, int d) {
ArrayList<Event> events = new ArrayList<Event>();
switch (m) {
case 1:
if (d == 1) {
events.add(new Event(_context.getResources().getString(R.string.text1), null, null, null, null, null, null, null));
}
}
return events
}
}
答案 0 :(得分:0)
1)您错过了()
中的getResources
。
2)您是否在资源中定义了R.string.text1
? (例如res/values/strings.xml
)
答案 1 :(得分:0)
试试这个......
String mystring = getResources().getString(R.string.mystring);
getResources()
是Context
类的方法。如果您位于活动或服务(扩展上下文)中,则可以像在此片段中一样使用它。
答案 2 :(得分:0)
我解决了。我在方法中添加了Context参数,然后使用参数
访问资源 public ArrayList<Event> eventDetails(Context mContext, int m, int d) {
ArrayList<Event> events = new ArrayList<Event>();
switch (m) {
case 1:
if (d == 1) {
events.add(new Event(mContext.getResources().getString(R.string.text1), null, null, null, null, null, null, null));
}
}
return events
}