13

Ich habe drei Registerkarten mit jeweils drei Fragmenten und einer Hauptaktivität, und ich möchte den Socket erstellen, um die Nachricht über WLAN-Netzwerk zu senden, also wo sollte ich den Code dafür schreiben? In dieser bestimmten Fragmentklasse oder Hauptaktivität?Was ist der Kernunterschied zwischen Fragment und Aktivität? Welcher Code kann in Fragment geschrieben werden?

+0

Überprüfung dieser Links dies kann Ihnen helfen .. [Fragmente vs Aktivitäten] [1] [1]: http://stackoverflow.com/questions/10478233/android-need-some-clarifications-of-fragments-vs-activities-and-views –

+0

Ein Fragment ist nicht vollständig Stand-a-lone, braucht es eine Aktivität als Gastgeber. Während eine Aktivität eigenständig instanziiert werden kann. Ich sehe das als den großen Unterschied. – LuckyMe

+0

[Dies ist eine andere Verbindung, und es beantwortet Ihre Frage] [1] [1]: http://stackoverflow.com/questions/10477997/difference-between-activity-and-fragmentactivity –

Antwort

15

Natürlich können Sie einen beliebigen Code in das Fragment schreiben, aber Sie müssen sich um ein paar Dinge kümmern. Beim Zugriff auf alles, was einen Kontext oder etwas benötigt, das für eine Aktivität spezifisch ist, müssen Sie einen Verweis auf die Superaktivität des Fragments erhalten, z. Sie tun so etwas wie dieses, während eine Absicht innerhalb einer Aktivität zu schaffen:

Intent intent = new Intent(this,SomeActivity.class); 

aber in einem Fragment müssen Sie etwas tun:

Intent intent = new Intent(super.getActivity(),SomeActivity.class); 

Ebenso, wenn Sie etwas aus dem Layout zugreifen Datei des Fragments. Sie müssen die folgenden Schritte ausführen:

1) erhalten Sie einen globalen Verweis auf das übergeordnete Layout Ihres Fragments in Ihrem Fragment. z. B.

private LinearLayout result_view; 

2) Implementieren Sie die OnCreateView-Methode anstelle der onCreate-Methode.

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 

     return result_view; 
    } 

3) aufpumpen das Fragment-Layout wie dies in der onCreateView Methode des Fragments:

result_view = (LinearLayout) inflater.inflate(
      R.layout.image_detail_pager, container, false); 

4) Sie können nun Layout-Ansichten wie folgt zugreifen:

layout_a = (LinearLayout) result_view 
      .findViewById(R.id.some_layout_id); 
+0

eigentlich möchte ich Socket erstellen, um die Nachricht über LAN zu senden, aber jetzt die Schaltfläche, auf der ich für das Broadcast-Ereignis zu hören bin, ist in einem der Fragment, kann ich dann den Broadcast-Nachrichtencode innerhalb Fragment schreiben? – Talib

+0

natürlich kann man schreiben. Was ist der Haken ? –

+0

Funktioniert wie ein Charme. –

Verwandte Themen