web-dev-qa-db-fra.com

Android: comment un fragment peut-il prendre une variable globale d'activité

J'ai une activité avec une variable globale int x, comment un fragment peut-il obtenir la valeur actuelle de la variable x de son activité?

30
esoni

Soit définissez la var comme public static, Ou utiliser

((MyActivity)getActivity()).getX()
92
Steelight

L'utilisation d'une variable statique publique n'est pas le meilleur moyen de communiquer entre une activité et un fragment. Découvrez cette réponse pour d'autres moyens:

Le documentation Android recommande d'utiliser une interface lorsque le fragment veut communiquer avec l'activité. Et lorsque l'activité souhaite communiquer avec le fragment, l'activité doit obtenir une référence au fragment (avec findFragmentById ), puis appeler la méthode publique du fragment.

La raison en est que les fragments sont découplés de l'activité dans laquelle ils se trouvent. Ils peuvent être réutilisés dans n'importe quelle activité. Si vous accédez directement à une activité parente ou à l'une de ses variables globales à partir d'un fragment, vous ne pouvez plus utiliser ce fragment dans une autre activité.

16
Suragch

version Kotlin:

(activity as MyActivity).x
7
Manohar Reddy
***In your Activity
==================
Bundle args = new Bundle();
args.putInt("something", Whatever you want to pass);
fragA.setArguments(args);

In your Fragment
==================
 Bundle args = getArguments();
//whatever you want to get ,get it here.
//for example integer given     
    int index = args.getInt("index", 0);
3
Kartheek