13

Ho tre schede con tre frammenti ciascuna e un'attività principale, e voglio creare il socket per inviare il messaggio sulla rete wifi, quindi dove dovrei scrivere il codice per esso? In quella particolare classe di frammenti o attività principale?Qual è la differenza principale tra frammento e attività? Quale codice può essere scritto in frammento?

+0

controllare questo link questo può aiutarti .. [frammenti vs attività] [1] [1]: http://stackoverflow.com/questions/10478233/android-need-some-clarifications-of-fragments-vs-activities-and-visiews –

+0

Un frammento non è completamente stand-alone, necessita un'attività come host. Mentre un'attività può essere istanziata da sola. La vedo come la principale differenza. – LuckyMe

+0

[Questo è un altro link, e risponde alla tua domanda] [1] [1]: http://stackoverflow.com/questions/10477997/difference-between-activity-and-fragmentactivity –

risposta

15

Ovviamente è possibile scrivere qualsiasi codice all'interno del frammento ma è necessario occuparsi di alcune cose. Durante l'accesso a qualsiasi cosa che richiede un contesto o qualcosa che è specifico per un'attività, è necessario ottenere un riferimento alla superattività del frammento, ad es. durante la creazione di un intento all'interno di un'attività che si fare qualcosa di simile:

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

ma all'interno di un frammento si dovrà fare qualcosa di simile:

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

Allo stesso modo, se si accede a qualche cosa dal layout file del frammento. È necessario eseguire le seguenti operazioni:

1) ottenere un riferimento globale al layout principale del frammento all'interno del frammento. ad esempio

private LinearLayout result_view; 

2) Implementare il metodo OnCreateView anziché il metodo onCreate.

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

     return result_view; 
    } 

3) Gonfiare il layout frammento come questo all'interno del metodo onCreateView del frammento:

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

4) ora è possibile accedere a una vista di layout come questo:

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

in realtà voglio creare socket per trasmettere il messaggio via LAN ma ora il pulsante su cui ascolterò l'evento di trasmissione è in uno dei frammenti, quindi posso scrivere il codice del messaggio di trasmissione all'interno di un frammento? – Talib

+0

offcourse puoi scrivere. che cosa è la cattura? –

+0

Funziona come un fascino. –