Как использовать setContentView (int) из класса, который не расширяет Activity - PullRequest
6 голосов
/ 15 июля 2011

Мне нужно вызвать setContentView (int) из моей основной Activity из другого класса, который не расширяет Activity.

В моем пользовательском классе у меня есть переменная private Context context;, которая передается из Activity в конструкторе, но я не могу понять, как получить доступ к методам Activity с помощью переменной context.

Ответы [ 3 ]

11 голосов
/ 15 июля 2011

Если ваш контекст является экземпляром класса Activity, должно работать простое приведение класса:

Activity a = (Activity) context;
a.setContentView(R.layout.your_layout);
1 голос
/ 15 июля 2011

Одним из решений (может быть, не самым элегантным) является передача вызывающей активности другому классу, а не только контексту.

0 голосов
/ 15 июля 2011

Вы должны передать ссылку на используемое вами действие.

Примерно так

class ActivityA extends Activity{
   @Override
   public void onCreate(Bundle state){
      super.onCreate(state);
      ClassA myclass = new ClassA(this);
   }
}

И тогда класс А будет иметь:

class ClassA {
   public ClassA(Activity yourActivity){
      ... Get your view here ....
      yourActivity.setContentView(view);
      ... do more things...
   }
}
...