2012-08-08 16 views
12

Mam aplikację, którą modernizuję. Jednym z etapów tego procesu jest przejście do układu opartego na Fragmentie (przy użyciu Fragmentów z biblioteki wsparcia). Przekształciłem Moje działania w Fragmenty, i ładnie działałem (przy użyciu ViewPagera, fajne rzeczy!).Fragment implementuje OnClickListener

Miałem swoje Działania wdrażające OnClickListener dla wszystkich moich potrzeb związanych z naciskaniem przycisków. Nowe inskrypcje Fragmentu robią oczywiście to samo, ale wygląda na to, że "onClick" nigdy nie zostaje trafiony. Czy w Fragmentach jest coś wyjątkowego, co uniemożliwia im pracę w ten sposób?

+1

Zakładam, że oznaczać to jej realizacji? Jak w "public class YourFrag rozszerza Fragment implementuje OnClickListener'? Jeśli tak, to czy możesz pokazać nam, w jaki sposób dołączasz detektor, a także metodę 'onClick'? – Eric

+0

Czy można znaleźćByViewId w metodzie onCreateView, a następnie dołączanie detektora w metodzie onActivityCreated? –

+0

Ups, wow, jestem trochę przemęczony. Tak, miałem na myśli wdrożenie, przepraszam. I jestem findViewByIding i dołączanie słuchacza w metodzie Update(). A skoro już o tym mowa, czy to nawet coś? Nie mam nawet metody onActivityCreated. Hmm – Nick

Odpowiedz

32

Wystarczy zrobić jedną to

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

bardzo prosty

+1

'extends Fragment' – bcorso

+0

Proste rzeczy są najbardziej niezwykłe. Ale tylko mądrzy są w stanie to zobaczyć. Wielkie dzięki. Próbowałem to zrozumieć przez wiele godzin. –

+0

Zapomniałem: myButton.setOnClickListener (this); Oh men @@! Zmarnowany mój czas po długim czasie wróciłem z Androidem. Dzięki. –

2

chcę komentować Abhijit Chakra odpowiedzi, ale wydaje się, że muszę mieć 50 powtórzeń na to. Dla tych, którzy zastanawiają się, czy nie można użyć odpowiedź Abhijit jest, to z powodu:

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

Musisz upewnić się, że jest onClick, NIE OnClick. Na szczęście wewnętrzny komunikat o błędzie w Androidzie przychodzi na ratunek.

8

skupię się do korzystania z działań OnClick dla zapewnienia powszechnego dostępu, trzeba zrobić tak jak jest to projekt, musi implementować View.OnClickListener, a następnie zastąpić metodę OnClick(), W OnCreateView() musisz zrobić tak, jak to button_submit.setOnClickListener (this);, aby uzyskać potrzebne widoki, Proszę zobaczyć poniższy kod dla 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; 
    } 
Powiązane problemy