2010-07-20 7 views
1

Je veux avoir une classe "Utils", qui aura plusieurs méthodes utilisées partout dans mon code. Par exemple, j'ai une barre supérieure avec un textview et deux ImageButton qui doivent afficher différents textes et icônes sur différentes activités.Comment obtenez-vous une référence de vue à partir d'une classe qui ne prolonge pas l'activité?

je me retrouve à écrire des trucs comme ça sur chaque activité:

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

J'aimerais findViewById une fois dans mon application tout, et appeler une méthode setupTopBar(String text, R.id.iconForImageButton1, R.id.iconForImageButton2), ou même passer l'identifiant de l'activité en cours et laisser la méthode comprendre ce qu'il faut montrer dans le texte et les images. J'ai créé la classe Util, mais elle ne s'étend pas Activity. Le problème est que si ce n'est pas le cas, findViewById n'est pas accessible, donc je ne peux pas l'utiliser.

Quel est le modèle pour faire quelque chose comme ça dans Android?

Répondre

4

Vos méthodes d'aide devraient ressembler à

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

Ensuite, vous pouvez faire une importation statique de l'activité et appelez

setTopBarText(this, R.id.mytextForThisView); 
0

La réponse est pas bon pour une certaine situation.

C'est ma méthode:

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

En utilisant le passage de paramètres peut résoudre ce genre de problème.