Autore Topic: Switch layout-fragment da orizzontale a verticale  (Letto 320 volte)

Offline EdoardoGoffredoDeveloper

  • Nuovo arrivato
  • *
  • Post: 44
  • Respect: 0
    • Mostra profilo
Switch layout-fragment da orizzontale a verticale
« il: 16 Marzo 2016, 12:23:50 CET »
0
Ciao a tutti =)

Premetto che sono nuovo nel mondo dello sviluppo android..


Ho un problema con la visualizzazione del layout  quando ruoto lo schermo da orizzontale a verticale.


In poche parole ho creato un layout land (layout-sw720dp-land/esempio.xml) e uno port (layout-sw720dp-port/esempio.xml)...

Fin qui tutto ok.. a quello port ho dato delle dimensioni precise e a quello land altre dimensioni precise..

Precedentemente avevo un problema con lo switch dei due layout ovvero il passaggio da layout  orizzontale a verticale passava correttamente ma l'activity veniva distrutta e ricreata..

Ho risolto questo problema mettendo nell'AndroidManifest.xml questo codice..

Codice (Java): [Seleziona]
android:configChanges="orientation|screenSize"

Il problema è che ora il passaggio da orizzontale a verticale non avviene automatico..  ad esempio... Apro l'app in orizzontale e visualizza il layout corretto ( per intenderci il layout-sw720dp-land/esempio.xml dato che uso un tablet) però una volta aperta l'app se giro il tablet in verticale, il layout verticale non viene visualizzato ma rimane quello in versione orizzontale..( per esempio nel layout orizzontale ho un bottone con scritto "Inizia" mentre in quello verticale ho lo stesso bottone con scritto "Finisci" e quando l'app è aperta e giro il tablet da orizzontale a verticale mi gira il layout facendomi però rimanere il layout creato per la versione orizzontale, quindi con il bottone "inizia").

Come posso fare far visualizzare il layout corretto SENZA ricreare e distruggere l'activity??


N.B: Uso i fragment... in poche parole ho un file activity_main.xml che fa riferimento all activity MainActivity.java che al suo interno ha questo codice
 
Codice (Java): [Seleziona]
<FrameLayout
            android:layout_below="@+id/toolbar"
            android:id="@+id/fragment_container"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:foreground="@drawable/shadow_toolbar"/>

all'interno di questo FrameLayout visualizzo i due layout in questo modo :

Codice (Java): [Seleziona]
FragmentEsempio fragment = new FragmentEsempio();
            android.support.v4.app.FragmentTransaction fragmentTransaction =
                    getSupportFragmentManager().beginTransaction();
            fragmentTransaction.replace(R.id.fragment_container, fragment);
            fragmentTransaction.commit();


Nel FragmentEsempio.java ci sono i due famosi layout..

Codice (Java): [Seleziona]
public class FragmentEsempio extends Fragment {


    public FragmentEsempio() {
        // Required empty public constructor
    }


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

        // Inflate the layout for this fragment
        return rootView;
    }


}


Come posso fare quindi per fare lo switch automatico dei due layout senza chiudere e riaprire l'app e senza farla ricreare??

Scusate se sono stato troppo contorto =)