Как вы получаете ссылку на представление из класса, который не расширяет Activity? - PullRequest
1 голос
/ 20 июля 2010

Я хочу иметь класс "Utils", который будет иметь несколько методов, используемых во всем моем коде. Например, у меня есть верхняя строка с textview и двумя ImageButton с, которые должны отображать разные тексты и значки для разных действий.

Я пишу что-то подобное на каждом занятии:

(TextView) topBarText = (TextView) findViewById(R.id.topBarText);
topBarText.setText(R.id.mytextForThisView);

Я бы хотел один раз найти ViewById во всем приложении и вызвать метод setupTopBar(String text, R.id.iconForImageButton1, R.id.iconForImageButton2) или даже передать идентификатор текущей операции и позволить методу выяснить, что отображать в тексте и изображениях.

Я создал класс Util, но он не расширяется Activity. Проблема в том, что если это не так, findViewById не доступен, поэтому я не могу его использовать.

По какому принципу можно сделать что-то подобное в Android?

Ответы [ 2 ]

5 голосов
/ 20 июля 2010

Ваши вспомогательные методы должны выглядеть как

public static void setTopBarText(Activity act, int textId){
    (TextView) topBarText = (TextView)act.findViewById(R.id.topBarText);
    topBarText.setText(textId);
}

Затем вы можете выполнить статический импорт из Activity и вызвать

setTopBarText(this, R.id.mytextForThisView);
0 голосов
/ 28 февраля 2011

Ответ не подходит для некоторых ситуаций.

Это мой метод:

In your Activity:
YouCustomClassObject.passView((View)findViewById(R.id.aview));

Использование передачи параметров может решить эту проблему.

...