9

Muszę wiedzieć, w jakiej metodzie oddzwaniania fragmentów powinniśmy wywołać usługę sieciową, za pomocą której po powrocie do fragmentu usługi sieciowej nie należy wywoływać ponownie.Prawidłowe podejście do usługi sieciowej wywołania (API) z klasy fragmentu

Na przykład. Mam klasy fragment MyFragment.java

public class MyFragment extends Fragment { 


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

    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.fragment_layout, container, 
       false); 

     return rootView; 
    } 

} 

Muszę wiedzieć, która metoda zwrotna Muszę zadzwonić usługa zaktualizować UI fragmentu. Right Teraz dzwonię do usług internetowych z onCreateView metody. ale muszę wiedzieć, jaki powinien być najlepszy sposób połączenia usługi WWW z fragmentu.

Odpowiedz

4

Jeśli dobrze rozumiem twój problem, chcesz pobrać niektóre dane z serwera, a następnie poinformować fragment, że dane są przygotowane i przerysować fragment, czy to prawda? Zgodnie z dokumentacją here:

onCreate() - System nazywa to podczas tworzenia fragmentu. W ramach swojej implementacji powinieneś zainicjować istotne komponenty fragmentu, który chcesz zachować, gdy fragment zostanie zatrzymany lub zatrzymany, a następnie wznowiony.

onCreateView() System wywołuje to, gdy nadeszła pora, aby fragment narysował swój interfejs użytkownika po raz pierwszy. Aby narysować interfejs dla twojego fragmentu, musisz zwrócić widok z tej metody, który jest korzeniem układu twojego fragmentu. Możesz zwrócić wartość null, jeśli fragment nie zawiera interfejsu użytkownika.

Po utworzeniu fragmentu gdzieś indziej w aplikacji, wywoływana jest metoda . Kiedy fragment ma zostać narysowany po raz pierwszy, wywoływana jest metoda onCreateView(), a ta metoda zwraca utworzony widok. W twoim przypadku prawdopodobnie powinieneś pójść z czymś takim jak:

  1. Deklaracja zmiennej instancji (kontenera) dla tych danych i adaptera (jeśli go używasz).
  2. In onCreate, zainicjuj wszystkie dane (pusty kontener), zainicjalizuj adapter, a następnie wykonaj AsyncTask.
  3. W onCreateView, przygotuj widok, aby powrócić - adapter itp. Tak więc teraz, po AsyncTask zakończy się, w onPostExecute wywołuje your_adapter.notifyDataSetChanged(). Spowoduje to ponowne narysowanie fragmentu, ponieważ adapter zostanie poinformowany, że dane zostały zmienione (pobrane z serwera).
0

Zależy od tego, kiedy chcesz pobrać dane. Czy chcesz go za każdym razem, gdy aplikacja pojawia się na pierwszym planie? Użyj onResume() Czy chcesz, aby była dostępna tylko wtedy, gdy aplikacja uruchamia się po raz pierwszy? Użyj onViewViewCreated(), która zostanie wywołana po zakończeniu onCreateView.