Autore Topic: Cambiare fragment al click su bottom bar  (Letto 318 volte)

Offline gabric

  • Utente senior
  • ****
  • Post: 615
  • Respect: +18
    • Google+
    • Mostra profilo
    • Brancato's site
  • Dispositivo Android:
    Nexus 5 / Tablet mediacom s4
  • Play Store ID:
    Brancato's+app
  • Sistema operativo:
    window7. ubuntu
Cambiare fragment al click su bottom bar
« il: 25 Gennaio 2015, 22:44:49 CET »
0
Salve, domanda atipica.
Devo implementare un applicazione nella quale l'utente può scegliere attraverso una bottom_bar fra 5 pagine (anche se google lo sconsiglia negli ultimi documenti, il cliente ha sempre ragione).
Quindi ho creato una swipe activity con il tool automatico di android studio.
Domanda: come faccio in modo che al click sui bottoni cambia l'activity aperta nel fragmenty?

Ecco il codice (al momento le activity cambiano con lo swipe)
Codice (Java): [Seleziona]
public class Home extends ActionBarActivity {

    SectionsPagerAdapter mSectionsPagerAdapter;

    ImageView home, ospitalita,multimedia,territoro, prodotti;
    TextView tvhome, tvospitalita, tvmultimedia, tvterritoro, tvprodotti;

    ViewPager mViewPager;

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

        home = (ImageView) findViewById(R.id.ibHome);
        ospitalita = (ImageView) findViewById(R.id.ibOspitalita);
        multimedia = (ImageView) findViewById(R.id.ibMultimedia);
        territoro = (ImageView) findViewById(R.id.ibTerritorio);
        prodotti = (ImageView) findViewById(R.id.ibProdotti);
        tvhome = (TextView) findViewById(R.id.tvHome);
        tvospitalita = (TextView) findViewById(R.id.tvOspitalita);
        tvmultimedia = (TextView) findViewById(R.id.tvMutimedia);
        tvterritoro = (TextView) findViewById(R.id.tvTerritorio);
        tvprodotti = (TextView) findViewById(R.id.tvProdotti);

       mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());

        View.OnClickListener gestore = new View.OnClickListener() {
            @Override
            public void onClick(View v) {


//Questa è la barra sotto, al momento cliccando cambia solo l'icona evidenziata.

               switch (v.getId()){
                   case R.id.ibHome:
                       changeBottomIcon("home");
                       mSectionsPagerAdapter.getItem(0);  //non fa niente
                        break;

                   case R.id.ibOspitalita:
                       changeBottomIcon("ospitalita");
                       mSectionsPagerAdapter.getItem(1);
                       break;

                   case R.id.ibMultimedia:
                       changeBottomIcon("multimedia");
                       mSectionsPagerAdapter.getItem(2);
                       break;

                   case R.id.ibTerritorio:
                       changeBottomIcon("territorio");
                       mSectionsPagerAdapter.getItem(3);
                       break;

                   case R.id.ibProdotti:
                       changeBottomIcon("prodotti");
                       mSectionsPagerAdapter.getItem(4);
                       break;

                }
            }
        };

        home.setOnClickListener(gestore);
        ospitalita.setOnClickListener(gestore);
        multimedia.setOnClickListener(gestore);
        territoro.setOnClickListener(gestore);
        prodotti.setOnClickListener(gestore);

        mViewPager = (ViewPager) findViewById(R.id.pager);
        mViewPager.setAdapter(mSectionsPagerAdapter);

    }


    /**
     * A {@link FragmentPagerAdapter} that returns a fragment corresponding to
     * one of the sections/tabs/pages.
     */

    public class SectionsPagerAdapter extends FragmentPagerAdapter {

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

        @Override
        public Fragment getItem(int position) {
            // getItem is called to instantiate the fragment for the given page.

            switch (position) {

//Qui viene gestito lo swipe, commento il changeBottomIcon perchè, altrimenti scorre quando dice lui
                case 0:
                   // changeBottomIcon("home");  
                    return new fragment_home();
                case 1:
                    //changeBottomIcon("territorio");
                    return new fragment_territorio();
                case 2:
                  //changeBottomIcon("ospitalita");
                    return new fragment_ospitalita();
                case 3:
                //changeBottomIcon("multimedia");
                    return new fragment_multimedia();
                case 4:
                  //changeBottomIcon("prodotti");
                    return new fragment_prodotti();
            }
            return null;
        }

        @Override
        public int getCount() {
           //num pagine
            return 5;
        }

        @Override
        public CharSequence getPageTitle(int position) {

            //Non dovrebbe essere visibile, perchè non viene mostrata la tab bar
            Locale l = Locale.getDefault();
            switch (position) {
                case 0:
                    return getString(R.string.home);
                case 1:
                    return getString(R.string.territorio);
                case 2:
                    return getString(R.string.ospitalita);
                case 3:
                    return getString(R.string.multimedia);
                case 4:
                    return getString(R.string.prodotti);
            }
            return null;
        }
    }

//Qui semplicemente cambio il bottone e l'icona, settando un certo colore
    public void changeBottomIcon(String tipo){
      .
      .
      .
//lo ometto perchè inutile
     
    }

}