2017-03-08 1 views
-1

Diese onAttach Methode Absturz meine Android-Anwendung, möchte ich die Bedeutung dieser Methode wissen, und was passiert, wenn ich die Methode vollständig Fragment onAttach() -Methode mein Code zum Absturz

@Override 
public void onAttach(Context context) { 
    super.onAttach(context); 
    if (context instanceof OnFragmentInteractionListener) { 
     mListener = (OnFragmentInteractionListener) context; 
    } else { 
     throw new RuntimeException(context.toString() 
       + " must implement OnFragmentInteractionListener"); 
    } 
} 

entfernen entfernt ich es und meine Code läuft reibungslos, hoffe, dass es in der Zukunft zu keinem Problem führen wird.

+0

Sie sollten die Codezeile angeben, die Fehler gibt und den Fehler ebenfalls teilt. –

+2

Wenn "Kontext" keine Instanz von "OnFragmentInteractionListener" ist, wird eine Ausnahme ausgelöst. Es könnte der Grund des Absturzes sein. –

Antwort

0

Hier Problem context instanceof OnFragmentInteractionListener

Fragment comunication Android docs.

@Override 
    public void onAttach(Activity activity) { 
     super.onAttach(activity); 

     // This makes sure that the container activity has implemented 
     // the callback interface. If not, it throws an exception 
     try { 
      mListener = (OnFragmentInteractionListener) activity; 
     } catch (ClassCastException e) { 
      throw new ClassCastException(activity.toString() 
        + " must implement OnHeadlineSelectedListener"); 
     } 
    } 
0

Dieser Code ist für documentation's way mit Fragmenten in Tätigkeit arbeiten, wenn eine Kommunikation zwischen den beiden benötigt wird. Ich erwähne, dass es die Art und Weise der Dokumentation ist, weil es nicht die einzige Möglichkeit ist (Sie könnten andere Techniken wie Publish/Subscribe-Engines verwenden, z. B. EventBus).

Dieser Code löst absichtlich eine RunTimeException aus, wenn die Aktivität, an die das Fragment angehängt wurde, nicht die Schnittstelle implementiert, an die das Fragment anhängen soll. Wenn es implementiert wird, wird die Aktivität als Zeiger dieses Schnittstellentyps gespeichert (in Ihrem Fall OnFragmentInteractionListener).

Sie können die Linie werfen die Ausnahme sehen:

throw new RuntimeException(context.toString() 
      + " must implement OnFragmentInteractionListener"); 

so, wenn Sie in der Konsole haben „muss OnFragmentInteractionListener implementieren“ - Sie wissen das Fragment mit der Aktivität verbunden war, die OnFragmentInteractionListener implementieren sollte, aber nicht .

Verwandte Themen