Как я могу получить контент ресурса из статического контекста? - PullRequest
156 голосов
/ 08 декабря 2010

Я хочу прочитать строки из файла xml, прежде чем я сделаю что-то еще, например, setText для виджетов, так как я могу сделать это без объекта активности для вызова getResources()?

Ответы [ 12 ]

0 голосов
/ 13 апреля 2015

В вашем классе, где вы реализуете функцию static , вы можете вызывать метод private \ public из этого класса. Метод private \ public может обращаться к getResources .

например:

public class Text {

   public static void setColor(EditText et) {
      et.resetColor(); // it works

      // ERROR
      et.setTextColor(getResources().getColor(R.color.Black)); // ERROR
   }

   // set the color to be black when reset
   private void resetColor() {
       setTextColor(getResources().getColor(R.color.Black));
   }
}

, а из другого класса \ деятельности вы можете позвонить:

Text.setColor('some EditText you initialized');
0 голосов
/ 13 августа 2014

Я думаю, возможно больше путей.Но иногда я использую это решение.(полностью глобально):

    import android.content.Context;

    import <your package>.R;

    public class XmlVar {

        private XmlVar() {
        }

        private static String _write_success;

        public static String write_success() {
            return _write_success;
        }


        public static void Init(Context c) {
            _write_success = c.getResources().getString(R.string.write_success);
        }
    }
//After activity created:
cont = this.getApplicationContext();
XmlVar.Init(cont);
//And use everywhere
XmlVar.write_success();
...