2012-08-08 29 views
12

Tengo una aplicación que estoy modernizando. Un paso de este proceso es cambiar a un diseño basado en Fragmentos (usando los Fragmentos de la biblioteca de soporte). Convertí mis actividades en fragmentos y conseguí que el diseño funcionara bien (¡con ViewPager, cosas geniales!)Fragmento implementa OnClickListener

Estaba haciendo que mis actividades implementaran OnClickListener para todas mis necesidades de pulsación de botones. Tengo las nuevas encarnaciones de Fragment haciendo lo mismo, por supuesto, pero parece que "onClick" nunca es golpeado. ¿Hay algo especial acerca de los Fragmentos que les impide trabajar de esta manera?

+1

supongo que quiere decir que sea su aplicación? Como en, 'clase pública YourFrag extends Fragment implementa OnClickListener'? Si es así, ¿puede mostrarnos cómo conecta el oyente, así como el método 'onClick'? – Eric

+0

¿Encuentra FindId en el método onCreateView y luego conecta el oyente en el método onActivityCreated? –

+0

Oops, wow, estoy un poco cansado. Sí, me refería a la implementación, lo siento. Y estoy findViewByIding y adjunto el oyente en el método Update(). Hablando de eso, ¿es eso incluso una cosa? Ni siquiera tengo un método onActivityCreated. Hmm – Nick

Respuesta

32

Eso sí, uno esta

public class fragmentOne extends Fragment implements OnClickListener { 
    Button myButton; 

    @Override 
    public View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedinstanceState) { 
     View myView = inflater.inflate(R.layout.fragment_1, container, false); 
     myButton = (Button) myView.findViewById(R.id.myButton); 
     myButton.setOnClickListener(this); 
     return myView; 
    } 

    @Override 
    public void onClick(View v) { 
     // implements your things 
    } 
} 

muy simple

+1

'extends Fragment' – bcorso

+0

Las cosas simples son las más extraordinarias. Pero solo los sabios pueden verlo. Muchas gracias. Estaba tratando de resolverlo por muchas horas. –

+0

Olvidé: myButton.setOnClickListener (esto); ¡Oh hombres @@! Perdí mi tiempo después de mucho tiempo regresando con Android. Gracias. –

2

quiero hacer un comentario sobre la respuesta Abhijit Chakra pero parece que tengo que tener 50 repeticiones para eso. Para aquellos que se preguntan si no se puede utilizar la respuesta de Abhijit, es debido a:

public void OnClick(View v) { 
    // implements your things 
} 

Usted necesita asegurarse de que es onclick, NO OnClick. Afortunadamente, el mensaje de error interno de Android Studio viene a rescatar.

8

que se centrará utilizar la acción OnClick para el acceso global, que tiene que hacer como este es su proyecto, debe implementar la View.OnClickListener, a continuación, reemplazar el método OnClick(), En OnCreateView() tiene que hacer esto button_submit.setOnClickListener (this); para las vistas que necesita, Consulte el siguiente código para obtener una respuesta clara, gracias.

public class New_Project extends Fragment implements View.OnClickListener{ 

       private View mView; 
       private EditText edttxt_projectname; 
       private Button button_submit; 

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

        mView = inflater.inflate(R.layout.fragment_newproject, container,false); 
        edttxt_projectname=(EditText)mView.findViewById(R.id.edttxt_projectname); 
        button_submit=(Button)mView.findViewById(R.id.button_submit); 

        button_submit.setOnClickListener(this); 

        return mView; 
       } 


       @Override 
       public void onClick(View v) { 
        switch (v.getId()) { 
        case R.id.button_submit: 
         edttxt_projectname.setText("Test Submit!#@%!#%"); 
         break; 
       default: 
         break; 
        } 

       } 
    } 
0
view.setOnLongClickListener(new View.OnLongClickListener() { 
    @Override 
    public boolean onLongClick(View v) { 
    switch (v.getId()) { 
     case R.id.imgView1: 
     Toast.makeText(getActivity(), "Long pressing", Toast.LENGTH_SHORT).show(); 
     updateImage(); 
     break; 
     case R.id.imgView2: 
     Toast.makeText(getActivity(), "Long pressing", Toast.LENGTH_SHORT).show(); 
     updateImage(); 
     break; 
     case R.id.imgView3: 
     Toast.makeText(getActivity(), "Long pressing", Toast.LENGTH_SHORT).show(); 
     updateImage(); 
     break; 
     default: 
     break; 
    } 
Cuestiones relacionadas