2016-06-01 2 views
0

J'ai une fenêtre qui contient 2 affichages de texte.Définition onClickListner pour les éléments dans la fenêtre contextuelle dans android

Si l'utilisateur clique sur un texte, le toast doit apparaître. J'ai codé pour cette fonction mais montre Nullpointer exception dans la ligne far.setOnClickListener(new OnClickListener() { Aidez-moi s'il vous plaît à ce sujet.

Mon code:

btn_a.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      LayoutInflater lInflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      View popup_view = lInflater.inflate(R.layout.popup_a, null); 
      final PopupWindow popup = new PopupWindow(popup_view,200,75,true); 
      popup.setFocusable(true); 
      popup.setBackgroundDrawable(new ColorDrawable()); 
      popup.showAsDropDown(btn_a, 0,0); 

      TextView far = (TextView) rootView.findViewById(R.id.fartext); 
      far.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        Toast.makeText(getActivity(), "Clicked Far", Toast.LENGTH_SHORT).show(); 

       } 
      }); 
     } 
    }); 

Répondre

4

Modifier cette ligne

TextView far = (TextView) popup_view.findViewById(R.id.fartext); 

au lieu de cette

TextView far = (TextView) rootView.findViewById(R.id.fartext); 
+0

Oh j'ai manqué cela.Cela fonctionne.Merci :) – tenten

+0

toujours wc @tenten. –

2

Vous obtenez un NullPointerException parce que vous essayez de définir un écouteur de clic sur une vue C'est en fait une partie de votre popup_view et non rootView. Fix comme ceci:

TextView far = (TextView) popup_view.findViewById(R.id.fartext); 
      far.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        Toast.makeText(getActivity(), "Clicked Far", Toast.LENGTH_SHORT).show(); 

       } 
      }); 
2

Le problème est vous êtes à la recherche dans rootViewfareText est existe pas. Vous devriez regarder dans la mise en page gonflée. Vérifiez le code ci-dessous.

btn_a.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     LayoutInflater lInflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View popup_view = lInflater.inflate(R.layout.popup_a, null); 
     final PopupWindow popup = new PopupWindow(popup_view,200,75,true); 
     popup.setFocusable(true); 
     popup.setBackgroundDrawable(new ColorDrawable()); 
     popup.showAsDropDown(btn_a, 0,0); 

     TextView far = (TextView) popup_view.findViewById(R.id.fartext); 
     far.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       Toast.makeText(getActivity(), "Clicked Far", Toast.LENGTH_SHORT).show(); 

      } 
     }); 
    } 
});