2015-09-21 1 views
1

J'ai deux fragments dans ma mainactivité, du premier, l'utilisateur clique sur un bouton et envoie à travers mon auditeur un caractère au second fragment, dépend de ce char un textview dans le deuxième fragment doit imprimer un texte. Mais dans mon metho onActivityCreated mon textview est toujours nul.Exception de pointeur NULL lors de la définition de valeurs dans TextView dans Fragments

Ceci est mon code: FragmentOne

public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    btnChefcito = (Button)getView().findViewById(R.id.btnChefcito); 
    btnChefcita = (Button)getView().findViewById(R.id.btnChefcita); 

    btnChefcito.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      welcomeListener.elegirSexo(sexo); 
      replaceFragment(); 
     } 
    }); 

    btnChefcita.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      sexo="f"; 
      welcomeListener.elegirSexo(sexo); 
      replaceFragment(); 
     } 
    }); 
} 

Ceci est mon deuxième fragment

@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    tviBienvenida = (TextView)getView().findViewById(R.id.tviBienvenida); 
} 



public void getSex(String sex){ 
    if(sex.equals("m")){ 
     tviBienvenida.setText(bienvenido); 
    }else if(sex.equals("f")){ 
     tviBienvenida.setText(bienvenida); 
    } 
} 
+0

où vous avez initialisé 'tviBienvenida'? –

+0

dans la méthode onActivityCreated mais il y a un nullpointer dans tviBienvenida.setText –

+0

au lieu de faire des choses dans onActivityCreated, essayez de faire dans onCreateView() –

Répondre

0

Au lieu de faire en onActivityCreated Faites ceci en onCreateView:

private static View viewHolder; 

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
    { 
     viewHolder = inflater.inflate(R.layout.YourFragmentLayout, container, false); 

     btnChefcito = (Button) viewHolder.findViewById(R.id.YourButtonId); 

btnChefcito.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      welcomeListener.elegirSexo(sexo); 
      replaceFragment(); 
     } 
    }); 


     return viewHolder; 
    } 
0

Sur Android vous avoir à déclarer une variable globale. tviBienvenida en vous classe, et créer vue

tviBienvenida = (TextView)getView().findViewById(R.id.tviBienvenida); 

La variable tviBienvenida aura toujours la valeur, et tout changement tviBienvenida sera également refected à votre textview.

0
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    view = inflater.inflate(R.layout.your_fragment_id, null, false); 

    btnChefcito = (Button)view.findViewById(R.id.btnChefcito); 
btnChefcita = (Button)view.findViewById(R.id.btnChefcita); 

btnChefcito.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     welcomeListener.elegirSexo(sexo); 
     replaceFragment(); 
    } 
}); 

btnChefcita.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     sexo="f"; 
     welcomeListener.elegirSexo(sexo); 
     replaceFragment(); 
    } 
}); 
    return view; 

} 

le problème est onActivityCreated(Bundle savedInstanceState) public void ne crée pas de vue dans le fragment remplacer si tout le code dans cette méthode

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) 

désolé pour mon anglais.

+0

Pour une raison quelconque, vous venez de donner la même réponse que de la mienne au lieu de justifier ma réponse –

+0

lorsque le second fragment est show getSex() méthode non appelée. il existe de nombreuses façons d'analyser les données d'un fragment à un autre fragment, vous pouvez utiliser cette bibliothèque https://github.com/greenrobot/EventBus –