2016-09-20 1 views
0

J'ai un fragment 'X' dont l'activité parente est 'A'.Android studio - Comment passer la valeur de contexte d'un fragment à une autre activité?

J'ai une autre activité 'B' qui contient une méthode 'getData()'; Cette activité possède également son propre constructeur paramétré dans lequel l'objet Context est transmis à ce constructeur.

Activité B: -

public class B 
{ 
    Context _context; 
    String val="XYZ"; 

    public B(Context context) 
    { 
    this._context = context; 
    //Rest of the code 
    } 
    public String getData() 
    { 
    return val; 
    } 
} 

Mon programme me demande d'appeler la méthode getData() de l'activité 'B' dans le fragment 'X'

Fragment X: -

public class X extends Fragment implements 
{ 
    String name; 

    Context context=getActivity().getApplicationContext(); 

    B obj1=new B(context); 
    //i have passed Context object from fragment X to Activity B 

    ButtonClickEvent(..) 
    { 
    name=obj1.getData(); 
    //Rest of the code 
    } 
} 

Le problème survient lors du lancement de Fragment X; l'erreur est liée à l'objet Contexte, je ne comprends pas ce qui est exatcly le problème; Les suggestions sont les bienvenues! Merci.

+0

S'il vous plaît poster l'erreur? D'ailleurs, pourquoi instanciez-vous l'activité avec un constructeur? En outre, il devrait y avoir un autre moyen d'obtenir les données que de créer une nouvelle instance de l'activité et ensuite obtenir ses données à partir d'un fragment qui n'y est pas attaché. Cela peut entraîner des bugs subtils mais fatals plus tard, au fur et à mesure que votre application se développe. –

Répondre

2

Deux définitions probables:

donc créer un constructor dans Activity et passer getAcivity() là pour obtenir leur contexte.

Merci.

+0

Merci pour votre suggestion! context = getActivity(). getApplicationContext(); J'ai écrit cette déclaration dans OnCreateView() et cela a fonctionné! – sam88