0

カレンダーに特定の日付のイベントのリストがあります。

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

ただし、問題は、でNullPointerExceptionが発生することですgetResources().getString(R.string.text1)

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
    }

}
4

3 に答える 3

0

1)あなたはで逃し()ましたgetResources

2)リソースで定義R.string.text1しましたか?(例res/values/strings.xml

于 2012-10-14T13:37:24.613 に答える
0

これを試して...

String mystring = getResources().getString(R.string.mystring);

getResources()Contextクラスのメソッドです。アクティビティまたはサービス(コンテキストを拡張する)内にいる場合は、このスニペットのように使用できます。

于 2012-10-14T15:01:30.470 に答える
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
}
于 2012-10-17T14:23:04.010 に答える