Autore Topic: Tabbed Activity Android Studio  (Letto 638 volte)

Offline MarcoOSX

  • Nuovo arrivato
  • *
  • Post: 9
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG G2
  • Sistema operativo:
    Android 4.4.2
Tabbed Activity Android Studio
« il: 21 Agosto 2014, 15:24:53 CEST »
0
Salve, ho un problema con Android quando creo una Tabbed Activity ho creato i due fragment che vorrei caricasse ma non so perchè ne carica solo uno per due volte consecutive.

Mi potete aiutare?
Vi posto il codice java:

Codice (Java): [Seleziona]
package com.unisalentotesiinformazione.marcomameli.colourhealth;

import java.util.Locale;

import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentManager;
import android.support.v13.app.FragmentPagerAdapter;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;


public class Uomo extends Activity {

    // Risolvere problema della sola visualizzazione
    // di un fragment anzichè i due... come si fa?1
    //
    /**
     * The {@link android.support.v4.view.PagerAdapter} that will provide
     * fragments for each of the sections. We use a
     * {@link FragmentPagerAdapter} derivative, which will keep every
     * loaded fragment in memory. If this becomes too memory intensive, it
     * may be best to switch to a
     * {@link android.support.v13.app.FragmentStatePagerAdapter}.
     */

    SectionsPagerAdapter mSectionsPagerAdapter;

    /**
     * The {@link ViewPager} that will host the section contents.
     */

    ViewPager mViewPager;

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

        // Create the adapter that will return a fragment for each of the three
        // primary sections of the activity.
        mSectionsPagerAdapter = new SectionsPagerAdapter(getFragmentManager());

        // Set up the ViewPager with the sections adapter.
        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.
            // Return a PlaceholderFragment (defined as a static inner class below).
            // Qui è dove carica i fragment ma non capisco perchè ne carica solo uno per due volte contemporaneamente
            // Sapete risolvere....
            final Fragment_uomo_fronte fragment_uomo_fronte = Fragment_uomo_fronte.newInstance_fronte(position + 1);
            final Fragment_uomo_retro fragment_uomo_retro = Fragment_uomo_retro.newInstance_retro(position + 2);
            return fragment_uomo_retro;
        }

        @Override
        public int getCount() {
            // Show 2 total pages.
            return 2;
        }

        @Override
        public CharSequence getPageTitle(int position) {
            Locale l = Locale.getDefault();
            switch (position) {
                case 0:
                    return getString(R.string.title_section1).toUpperCase(l);
                case 1:
                    return getString(R.string.title_section2).toUpperCase(l);
            }
            return null;
        }
    }

    /**
     * A placeholder fragment containing a simple view.
     */

    public static class Fragment_uomo_fronte extends Fragment {
        /**
         * The fragment argument representing the section number for this
         * fragment.
         */

        private static final String ARG_SECTION_NUMBER = "section_number";

        /**
         * Returns a new instance of this fragment for the given section
         * number.
         */

        public static Fragment_uomo_fronte newInstance_fronte(int sectionNumber) {
            Fragment_uomo_fronte fragment = new Fragment_uomo_fronte();
            Bundle args = new Bundle();
            args.putInt(ARG_SECTION_NUMBER, sectionNumber);
            fragment.setArguments(args);
            return fragment;
        }

        public Fragment_uomo_fronte() {
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_uomo_fronte, container, false);
            return rootView;
        }
    }
    public static class Fragment_uomo_retro extends Fragment {
        /**
         * The fragment argument representing the section number for this
         * fragment.
         */

        private static final String ARG_SECTION_NUMBER = "section_number";

        /**
         * Returns a new instance of this fragment for the given section
         * number.
         */

        public static Fragment_uomo_retro newInstance_retro(int sectionNumber) {
            Fragment_uomo_retro fragment = new Fragment_uomo_retro();
            Bundle args = new Bundle();
            args.putInt(ARG_SECTION_NUMBER, sectionNumber);
            fragment.setArguments(args);
            return fragment;
        }

        public Fragment_uomo_retro() {
        }

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

}

Post unito: 22 Agosto 2014, 12:47:23 CEST
Salve a chi possa interessare ho trovato la soluzione, modificando il metodo Fragment getItem come segue:

Codice (Java): [Seleziona]
final Fragment_uomo_fronte fragment_uomo_fronte =
                    Fragment_uomo_fronte.newInstance_fronte(position + 1);
            final Fragment_uomo_retro fragment_uomo_retro =
                    Fragment_uomo_retro.newInstance_retro(position + 2);
            if ((position == 0) && (position < 1)) {
                return fragment_uomo_fronte;
            } else {
                return fragment_uomo_retro;
            }
« Ultima modifica: 22 Agosto 2014, 12:47:23 CEST da MarcoOSX, Reason: Merged DoublePost »

Offline Cleon I

  • Nuovo arrivato
  • *
  • Post: 49
  • Sono l'imperatore della galassia
  • Respect: +2
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    LG L70, Nexus 7 2013
  • Sistema operativo:
    LinuxMint Cinnamon 17.1
Re:Tabbed Activity Android Studio
« Risposta #1 il: 05 Settembre 2014, 11:40:54 CEST »
0
scorrendo velocemente il codice pensavo anche io il problema fosse quello

non sarebbe più leggibile un case? se i tab diventano 3 impazzisci

Offline MarcoOSX

  • Nuovo arrivato
  • *
  • Post: 9
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG G2
  • Sistema operativo:
    Android 4.4.2
Re:Tabbed Activity Android Studio
« Risposta #2 il: 05 Settembre 2014, 14:58:42 CEST »
0
Si infatti nell'altra activity dove erano 5 ho usato lo switch :)