2012-08-08 4 views
12

Ich habe eine Anwendung, die ich modernisiere. Ein Schritt dieses Prozesses ist der Wechsel zu einem Fragment-basierten Layout (unter Verwendung der Fragmente aus der Support-Bibliothek). I umgewandelt meine Aktivitäten in Fragmente, und bekam das Layout gut arbeiten (ein ViewPager, coole Sachen mit!)Fragment implementiert OnClickListener

ich meine Aktivitäten OnClickListener für alle meine Knopf dringendsten Bedürfnisse umzusetzen hatte. Ich habe die neuen Fragment Inkarnationen, die das gleiche tun, aber es sieht so aus, als ob "onClick" nie getroffen wird. Gibt es etwas Besonderes an Fragmenten, das sie daran hindert, so zu arbeiten?

+1

Ich nehme an, Sie meinen es es zu implementieren? Wie in, öffentliche Klasse erweitert YourFrag Fragment implementiert OnClickListener? Wenn ja, können Sie uns zeigen, wie Sie den Listener und die Methode 'onClick' anhängen? – Eric

+0

Sind Sie in der onCreateView-Methode findByViewId und fügen Sie dann den Listener in die onActivityCreated-Methode ein? –

+0

Ups, wow, ich bin ein wenig übermüdet. Ja, ich meinte es zu implementieren, tut mir leid. Und ich finde ViewByIding und Anhängen der Listener in der Update() -Methode. Apropos, ist das überhaupt eine Sache? Ich habe nicht einmal eine onActivityCreated-Methode. Hmm – Nick

Antwort

32

tun Nur eine dieser

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

sehr einfach

+1

'extends Fragment' – bcorso

+0

Einfache Dinge sind die außergewöhnlichsten. Aber nur die Weisen können es sehen. Danke vielmals. Ich habe versucht, es für viele Stunden herauszufinden. –

+0

Ich habe vergessen: myButton.setOnClickListener (this); Oh Männer @@! Verschwendet meine Zeit nach langer Zeit wieder mit Android kommen. Vielen Dank. –

2

ich auf Abhijit Chakra Antwort kommentieren wollen, aber es scheint, dass ich 50 Wiederholungen dafür haben müssen. Für diejenigen, die sich fragen, ob Sie nicht Abhijit Antwort verwenden kann, ist es, weil:

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

Sie müssen sicherstellen, dass es onClick, nicht OnClick. Zum Glück kommen Android Studio interne Fehlermeldung zu retten.

8

I Fokus wird die Aktion OnClick für den weltweiten Zugang zu verwenden, Sie haben wie dieses ist Ihr Projekt zu tun, die View.OnClickListener implementieren müssen, dann Überschreiben Sie die Methode OnClick(), In OnCreateView() muss dies tun button_submit.setOnClickListener (this); für die Ansichten, die Sie benötigen, Bitte beachten Sie den folgenden Code für Clear Answer, Thankyou.

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