Autore Topic: Cambio di un fragment attraverso uno slider menu  (Letto 569 volte)

Offline ValerioAdo

  • Utente normale
  • ***
  • Post: 317
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Huawei Ascend g525
  • Sistema operativo:
    windows 8.1
Cambio di un fragment attraverso uno slider menu
« il: 25 Agosto 2015, 16:47:51 CEST »
0
Salve a tutti!

Mi sono piantato un attimo nello studio dei fragment.... vi spiego l'applicazione di prova che sto cercando di creare...

La mia app ha uno slider menu con varie voci con cui cambio categoria, cliccando su una voce mi deve cambiare il contenuto del fragment, il problema è che non riesco a fargli cambiare questo contenuto... cioè quando cambio sezione mi appare una pagina vuota oppure crasha...

questo è l'xml dove è contenuto il fragment:

Codice (XML): [Seleziona]
<!-- A DrawerLayout is intended to be used as the top-level content view using match_parent for both width and height to consume the full space available. -->
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools" android:id="@+id/drawer_layout"
   android:layout_width="match_parent" android:layout_height="match_parent"
   tools:context=".MainActivity">

    <!-- As the main content view, the view below consumes the entire
        space available using match_parent in both dimensions. -->
    <FrameLayout android:id="@+id/container" android:layout_width="match_parent"
       android:layout_height="match_parent" />

    <!-- android:layout_gravity="start" tells DrawerLayout to treat
        this as a sliding drawer on the left side for left-to-right
        languages and on the right side for right-to-left languages.
        If you're not building against API 17 or higher, use
        android:layout_gravity="left" instead. -->
    <!-- The drawer is given a fixed width in dp and extends the full height of
        the container. -->
    <fragment android:id="@+id/navigation_drawer"
       android:layout_width="@dimen/navigation_drawer_width" android:layout_height="match_parent"
       android:layout_gravity="start"
       android:name="com.example.thebubblecompany.test.NavigationDrawerFragment"
       tools:layout="@layout/fragment_navigation_drawer" />

</android.support.v4.widget.DrawerLayout>

e questo è il metodo che uso per cambiare il fragment:

Codice (Java): [Seleziona]
 public void onSectionAttached(int number) {
        MyProfileFragment fragment = null;
        switch (number) {
            case 1:
                mTitle = getString(R.string.title_section5);
                break;
            case 2:
                mTitle = getString(R.string.title_section1);
                //Intent profile = new Intent(MainActivity.this, MyProfile.class);
                //startActivity(profile);
                fragment=new MyProfileFragment();
                break;
            case 3:
                mTitle = getString(R.string.title_section2);
                break;
            case 4:
                mTitle = getString(R.string.title_section3);
                break;
            case 5:
                mTitle= getString(R.string.title_section4);
                break;
        }
    }

nel creare lo slider menu ho seguito questo esempio per il cambiamento dei fragment:

Codice (Java): [Seleziona]
        // update the main content by replacing fragments
                Fragment fragment = null;
                switch (position) {
                case 0:
                        fragment = new HomeFragment();
                        break;
                case 1:
                        fragment = new FindPeopleFragment();
                        break;
                case 2:
                        fragment = new PhotosFragment();
                        break;
                case 3:
                        fragment = new CommunityFragment();
                        break;
                case 4:
                        fragment = new PagesFragment();
                        break;
                case 5:
                        fragment = new WhatsHotFragment();
                        break;

                default:
                        break;
                }

e questa è una classe tipo (sempre da esempio):

Codice (Java): [Seleziona]
public class WhatsHotFragment extends Fragment {
       
        public WhatsHotFragment(){}
       
       
        @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
 
        View rootView = inflater.inflate(R.layout.fragment_whats_hot, container, false);
         
        return rootView;
    }
}

seguendo questo esempio non funziona il cambio dei fragment.... avete qualche suggerimento?

Spero di essere stato abbastanza chiaro, grazie mille!

Offline Ohmnibus

  • Utente senior
  • ****
  • Post: 596
  • Respect: +133
    • Google+
    • @ohmnibus
    • Mostra profilo
    • Lords of Knowledge GdR
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    Ohmnibus
  • Sistema operativo:
    Windows 7 x64
Re:Cambio di un fragment attraverso uno slider menu
« Risposta #1 il: 25 Agosto 2015, 17:53:05 CEST »
0
Dal codice che hai postato mi pare che ti manchi un po' di background.
Ti consiglio di dare un'occhiata a questi tutorial:

Utilizzo dei fragment
https://developer.android.com/training/basics/fragments/creating.html

Interfacce flessibili e scambio di fragment
https://developer.android.com/training/basics/fragments/fragment-ui.html

Comunicazione tra fragment differenti
https://developer.android.com/training/basics/fragments/communicating.html
Ohmnibus
Le mie app su Play Store

È stata trovata una soluzione al tuo problema? Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato.

Offline ValerioAdo

  • Utente normale
  • ***
  • Post: 317
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Huawei Ascend g525
  • Sistema operativo:
    windows 8.1
Re:Cambio di un fragment attraverso uno slider menu
« Risposta #2 il: 26 Agosto 2015, 10:58:00 CEST »
0
Grazie mille ^^ finalmente gestisco correttamente il cambio di layout all'interno del fragment.

Solo un'ultima domanda: All'interno di un mio layout ho una listView che all'interno del fragment è al centro ma io voglio che sia "ancorata" sotto la action bar.
Ho provato a cambiare la gravity sia nell'xml della listview che in quello del fragment ma la lista rimane comunque al centro... cosa devo andare a modificare?

P.s per la classe che mi carica e popola la listview uso un extends Fragment invece di un extends ListFragment... non so se può essere utile

Grazie mille ancora!

Offline Ohmnibus

  • Utente senior
  • ****
  • Post: 596
  • Respect: +133
    • Google+
    • @ohmnibus
    • Mostra profilo
    • Lords of Knowledge GdR
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    Ohmnibus
  • Sistema operativo:
    Windows 7 x64
Re:Cambio di un fragment attraverso uno slider menu
« Risposta #3 il: 26 Agosto 2015, 11:03:55 CEST »
0
Senza vedere i due XML posso solo andare a tentativi. Hai provato a mettere android:layout_height="match_parent" nella ListView?
Ohmnibus
Le mie app su Play Store

È stata trovata una soluzione al tuo problema? Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato.

Offline ValerioAdo

  • Utente normale
  • ***
  • Post: 317
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Huawei Ascend g525
  • Sistema operativo:
    windows 8.1
Re:Cambio di un fragment attraverso uno slider menu
« Risposta #4 il: 26 Agosto 2015, 15:29:13 CEST »
0
si scusa hai ragione

questo è xml dove ho il fragment:
Codice (XML): [Seleziona]
<!-- A DrawerLayout is intended to be used as the top-level content view using match_parent for both width and height to consume the full space available. -->
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools" android:id="@+id/drawer_layout"
   android:layout_width="match_parent" android:layout_height="match_parent"
   tools:context=".MainActivity">

    <!-- As the main content view, the view below consumes the entire
        space available using match_parent in both dimensions. -->
    <FrameLayout android:id="@+id/container" android:layout_width="match_parent"
       android:layout_height="match_parent" >

        <fragment
           android:layout_width="match_parent"
           android:layout_height="match_parent"
           android:id="@+id/fragment2"
           android:layout_gravity="top|start"
           tools:layout="@layout/home"
           android:name="com.example.test.test.emptyFragment" />
    </FrameLayout>

    <!-- android:layout_gravity="start" tells DrawerLayout to treat
        this as a sliding drawer on the left side for left-to-right
        languages and on the right side for right-to-left languages.
        If you're not building against API 17 or higher, use
        android:layout_gravity="left" instead. -->
    <!-- The drawer is given a fixed width in dp and extends the full height of
        the container. -->
    <fragment android:id="@+id/navigation_drawer"
       android:layout_width="@dimen/navigation_drawer_width" android:layout_height="match_parent"
       android:layout_gravity="start"
       android:name="com.example.test.test.NavigationDrawerFragment"
       tools:layout="@layout/fragment_navigation_drawer" />

</android.support.v4.widget.DrawerLayout>

in fragment2 carico i layout che cambiano mentre fragment è quello dello slider menu

questo invece è l'xml dove ho la listview che carico:
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical" android:layout_width="match_parent"
   android:layout_height="match_parent">

    <ListView
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:id="@+id/ProfileList"
       android:layout_centerVertical="true"
       android:layout_centerHorizontal="true" />

</RelativeLayout>

cosa ne pensi?
« Ultima modifica: 27 Agosto 2015, 09:01:13 CEST da ValerioAdo, Reason: Postato 2 volte lo stesso xml »

Offline Ohmnibus

  • Utente senior
  • ****
  • Post: 596
  • Respect: +133
    • Google+
    • @ohmnibus
    • Mostra profilo
    • Lords of Knowledge GdR
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    Ohmnibus
  • Sistema operativo:
    Windows 7 x64
Re:Cambio di un fragment attraverso uno slider menu
« Risposta #5 il: 26 Agosto 2015, 15:32:30 CEST »
0
...penso che hai postato due volte lo stesso layout :D
Ohmnibus
Le mie app su Play Store

È stata trovata una soluzione al tuo problema? Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato.

Offline ValerioAdo

  • Utente normale
  • ***
  • Post: 317
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Huawei Ascend g525
  • Sistema operativo:
    windows 8.1
Re:Cambio di un fragment attraverso uno slider menu
« Risposta #6 il: 27 Agosto 2015, 09:01:38 CEST »
0
cavolo scusa..... ho modificato il messaggio...

Offline Ohmnibus

  • Utente senior
  • ****
  • Post: 596
  • Respect: +133
    • Google+
    • @ohmnibus
    • Mostra profilo
    • Lords of Knowledge GdR
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    Ohmnibus
  • Sistema operativo:
    Windows 7 x64
Re:Cambio di un fragment attraverso uno slider menu
« Risposta #7 il: 27 Agosto 2015, 10:08:37 CEST »
0
Ci avevo visto giusto.

Hai provato a mettere android:layout_height="match_parent" nella ListView?

Metti android:layout_height="match_parent" nella ListView.
...e probabilmente è meglio che metti anche android:layout_width="match_parent".
Ohmnibus
Le mie app su Play Store

È stata trovata una soluzione al tuo problema? Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato.

Offline ValerioAdo

  • Utente normale
  • ***
  • Post: 317
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Huawei Ascend g525
  • Sistema operativo:
    windows 8.1
Re:Cambio di un fragment attraverso uno slider menu
« Risposta #8 il: 27 Agosto 2015, 11:05:38 CEST »
0
Perfetto!
grazie mille! ^^