9
votes

Filveviefyide dans une méthode statique

J'ai cette méthode statique: xxx

Cependant, je ne peux pas comprendre comment obtenir le premier FindviewyID pour jouer sympa avec cela comme il le dit est une méthode non statique. Je comprends pourquoi cela dit que, mais il doit y avoir une solution de contournement? J'ai passé contexte dans cette méthode mais je ne pouvais pas les travailler ensemble.


6 commentaires

Vous n'avez pas besoin de transmettre un objet contextuel, mais un objet de vision. Celui qui tient votre point de vue


Pourquoi ne pas simplement rendre l'affichage d'une variable de classe large et d'y accéder de cette façon


@Wamasa qui a la bonne réponse..post it


@tyczj, j'ai réellement utilisé votre suggestion et ça marche génial! Vous pouvez poster cela comme réponse.


Pourquoi doit-il être statique de toute façon?


@ NJZK2 Son appelé d'une autre méthode statique qui doit être statique.


3 Réponses :


2
votes

C'est un peu bizarre. Mais vous pouvez transmettre la vue root comme paramètre.

//some method...
ViewGroup root = (ViewGroup) findViewById(R.id.toast_layout_root);
displayLevelUp(level, context, root);
//some method end...


public void displayLevelUp(int level, Context context, ViewGroup root) {

LayoutInflater inflater = (LayoutInflater) context
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

View layout = inflater.inflate(R.layout.custom_level_coast,
        root);

TextView text = (TextView) layout.findViewById(R.id.toastText);
text.setText("This is a custom toast");

Toast toast = new Toast(context);
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(layout);
toast.show();

Toast.makeText(context, String.valueOf(level), Toast.LENGTH_SHORT)
        .show();

}


0 commentaires

1
votes

Si vous souhaitez coller avec une méthode statique, utilisez une activité au lieu du contexte en tant que paramètre et faire une activité.FindviewbyID comme: xxx

Une autre façon de le faire est de transmettre le groupe de vue des parents En tant que paramètre au lieu d'un contexte ou d'une activité: xxx


0 commentaires

9
votes

Une chose que vous pouvez faire est de faire la vue une variable de classe large et d'utiliser cela. Je ne recommande pas de faire ça, mais cela fonctionnera si vous avez besoin de quelque chose de rapide et de sale.

passer en vue sous forme de paramètre serait la manière préférée


1 commentaires

Merci, je ne peux pas croire que je n'y pensais pas.