2012-08-08 22 views
12

Ho un'applicazione che sto modernizzando. Un passaggio di questo processo sta cambiando in un layout basato su Fragment (usando i Fragments dalla libreria di supporto). Ho convertito le mie attività in frammenti e ho ottenuto un buon funzionamento del layout (utilizzando un ViewPager, cose interessanti!)Implementa frammenti OnClickListener

Stavo facendo in modo che le mie attività implementassero OnClickListener per tutte le mie esigenze di pressione dei pulsanti. Ho le nuove incarnazioni di Fragment che fanno la stessa cosa, ovviamente, ma sembra che "onClick" non venga mai colpito. C'è qualcosa di speciale in Fragments che impedisce loro di lavorare in questo modo?

+1

Presumo che dire, è la sua attuazione? Come in, 'classe pubblica YourFrag estende Fragment implements OnClickListener'? In tal caso, puoi mostrarci come allegare l'ascoltatore e il metodo 'onClick'? – Eric

+0

Sei findByViewId nel metodo onCreateView e quindi allegando il listener nel metodo onActivityCreated? –

+0

Oops, wow, sono un po 'stanco. Sì, volevo dire l'implementazione, mi dispiace. E trovoViewByIding e allego il listener nel metodo Update(). A proposito, è davvero una cosa? Non ho nemmeno un metodo onActivityCreated. Hmm – Nick

risposta

32

Basta fare uno questo

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 
    } 
} 

molto semplice

+1

'extends Fragment' – bcorso

+0

Le cose semplici sono le più straordinarie. Ma solo i saggi riescono a vederlo. Molte grazie. Stavo cercando di immaginarlo per molte ore. –

+0

Ho dimenticato: myButton.setOnClickListener (this); Oh men @@! Ho perso tempo dopo tanto tempo con Android. Grazie. –

2

voglio commentare Abhijit Chakra risposta, ma sembra che ho bisogno di avere 50 ripetizioni per questo. Per coloro che si chiedono se non è possibile utilizzare la risposta di Abhijit, è a causa di:

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

È necessario assicurarsi che sia onClick, NON OnClick. Per fortuna, il messaggio di errore interno di Android Studio viene in soccorso.

8

mi concentrerò di utilizzare l'azione OnClick per l'accesso globale, quello che dovete fare come questo è il progetto, devono implementare l'View.OnClickListener, quindi l'override del metodo OnClick(), In OnCreateView() deve fare come questo button_submit.setOnClickListener (this); per le Visualizzazioni necessarie, Si prega di consultare il seguente codice per la Risposta chiara, Grazie.

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; 
    } 
Problemi correlati