• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Przesyłanie danych między Activity i Fragmentami ViewPager

VPS Starter Arubacloud
0 głosów
534 wizyt
pytanie zadane 14 listopada 2016 w Android, Swift, Symbian przez adamek339 Użytkownik (600 p.)

Witam, mam aplikację w której stworzyłem 3 ekrany używając ViewPagera (mam 3 fragmenty  i główne activity).

Mam taki problem iż nie potrafię przesłać danych z activity do danego fragmentu.

Czy ktoś może wie jak to zrobić.

Próbowałem to przesyłać przez bundle ale nie działa :/

 

 

public class MainActivity extends FragmentActivity {
    ViewPager viewPager;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        viewPager= (ViewPager) findViewById(R.id.pager);
        viewPager.setAdapter(new MyAdapter(getSupportFragmentManager()));






    }






}


class MyAdapter extends FragmentPagerAdapter{


    public MyAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int arg0) {

        Fragment fragment=null;
        if(arg0==0){
            fragment=new FragmentA();


        }
        if(arg0==1){
            fragment=new FragmentB();


        }
        if(arg0==2){
            fragment=new FragmentC();


        }
        return fragment;
    }

    @Override
    public int getCount() {
        return 3;
    }


}

 

2 odpowiedzi

0 głosów
odpowiedź 15 listopada 2016 przez KubenQPL Maniak (62,820 p.)
Jeśli to pojedyncze int, stringi itp. to używaj intent.setArguments i we Fragmentach też setArguments. A jeśli to wiecej danych to zastanów się może lepiej zrobić Singletona?
komentarz 16 listopada 2016 przez adamek339 Użytkownik (600 p.)
Nie bo nie wiem gdzie jak mam dodać ten rootContainer
komentarz 16 listopada 2016 przez KubenQPL Maniak (62,820 p.)
W pliku xml twojego Activity np. activity_main.xml
komentarz 16 listopada 2016 przez adamek339 Użytkownik (600 p.)
To mam po prostu stworzyć np Relative Layout i nadać mu id?
komentarz 16 listopada 2016 przez KubenQPL Maniak (62,820 p.)
Tak
komentarz 16 listopada 2016 przez adamek339 Użytkownik (600 p.)
Mógłbyś zerknąć na kod który wrzuciłem. Bo tak jak napisałeś wcześniej że jeśli wrzuce Bundle do viewPagera to sie uda. I działa tylko mam taki problem że jeśl chcę wrzucić dane z poza metody getItem np. z onCreate to wtedy nie wiem jak je tam przekazac...
0 głosów
odpowiedź 16 listopada 2016 przez adamek339 Użytkownik (600 p.)

Teraz przesyłanie działa tylko nie wiem jak przekazać dane z do metody getItem np z onCreate

 

public class MainActivity extends FragmentActivity {
    ViewPager viewPager;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ArrayList<String> dane = new ArrayList<String>();

        viewPager = (ViewPager) findViewById(pager);
        viewPager.setAdapter(new MyAdapter(getSupportFragmentManager()));

       








    }





    class MyAdapter extends FragmentPagerAdapter {




        public MyAdapter(FragmentManager fm) {
            super(fm);

        }


        @Override
        public Fragment getItem(int arg0) {

            Fragment fragment = null;
            if (arg0 == 0) {
          
                fragment = new FragmentA();

              

                fragment.setArguments(bundle);



            }
            if (arg0 == 1) {
                fragment = new FragmentB();


            }
            if (arg0 == 2) {
           
              String name="Marian" ;
       
                fragment = new FragmentC();

             
                


                Bundle bundle = new Bundle();

               bundle.putString("name", name);
    


                fragment.setArguments(bundle);
    


            }


            if (arg0 == 3) {

                fragment = new FragmenyD();
            }
            return fragment;
        }

        @Override
        public int getCount() {
            return 3;
        }


    }
}

 

komentarz 16 listopada 2016 przez KubenQPL Maniak (62,820 p.)

Przypuśćmy że do Fragmentu przekazujesz jakieś ID, to wtedy robisz zmienną globalną 

int id;

dla klasy Fragmentu, a w onCreate() przypisujesz tej zmiennej wartość z getArguments()

this.id = getArguments().getInt("klucz"); 

 w cudzysłowiu klucz jaki nadałeś w "setArguments()"

Podobne pytania

0 głosów
0 odpowiedzi 105 wizyt
0 głosów
1 odpowiedź 133 wizyt
0 głosów
0 odpowiedzi 106 wizyt

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...