Autore Topic: Impossibile catturare l'evento interno al fragment  (Letto 324 volte)

Offline Matteo Z.

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Oneplus 5
  • Sistema operativo:
    Android 7.1.1
Impossibile catturare l'evento interno al fragment
« il: 11 Agosto 2017, 10:54:49 CEST »
0
Buongiorno sto sviluppando un'applicazione in android 4.4 kitkat in cui ho creato un fragment per la selezione della data (una textview con la data selezionata e un imagebutton che dovrebbe aprire una dialog per la selezione della data), io vorrei gestire l'evento onclick dell'image button all'interno del fragment, ma non riesco in nessun modo ad intercettare l'evento.
Questo è il codice nella mia activity principale:
Codice (XML): [Seleziona]
<fragment
       android:id="@+id/sel_data"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:name="layout.SelectDate"/>

mentre il codice nel fragment è
Codice (Java): [Seleziona]
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_selezione_data, container, false);
        ImageButton btn = (ImageButton) view.findViewById(R.id.btn_sel_data);;
        btn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                        //esegui codice
                }
        });
        return inflater.inflate(R.layout.fragment_selezione_data, container, false);
}

oppure ho provato così:
Codice (Java): [Seleziona]
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_selezione_data, container, false);
        view.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                        //esegui codice
                }
        });
        return inflater.inflate(R.layout.fragment_selezione_data, container, false);
}

oppure ho provato a implementare onclicklistener nella classe
Codice (Java): [Seleziona]
public class SelezioneDataFragment extends Fragment implements View.OnClickListener, ma nessuna di queste soluzioni funziona. L'unico sistema che funziona è quello di scrivere nel codice xml il nome dell'evento:

Codice (XML): [Seleziona]
<ImageButton
           android:onClick="onClick"
           .../>
ma in questo caso devo gestire l'evento nell'activity principale

sapete dirmi dove sto sbagliando?

grazie mille

Offline capitancooker

  • Utente junior
  • **
  • Post: 119
  • Marco
  • Respect: +10
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Sistema operativo:
    macOS High Sierra
Re:Impossibile catturare l'evento interno al fragment
« Risposta #1 il: 11 Agosto 2017, 11:36:03 CEST »
0
La soluzione giusta era la prima, solo che nel return va messa la view:

Codice (Java): [Seleziona]
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_selezione_data, container, false);
        ImageButton btn = (ImageButton) view.findViewById(R.id.btn_sel_data);;
        btn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                        //esegui codice
                }
        });
        return view; // <-- correggi qui
}
Ciao,
Marco
Se sbaglio, correggetemi.

Offline Matteo Z.

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Oneplus 5
  • Sistema operativo:
    Android 7.1.1
Re:Impossibile catturare l'evento interno al fragment
« Risposta #2 il: 11 Agosto 2017, 12:01:36 CEST »
0
Cio ho perso un giorno intero! Grazie infinite!