Autore Topic: Problema creazione/rimozione fragment (necessito di 2 click)  (Letto 461 volte)

Offline Blodhgard

  • Utente junior
  • **
  • Post: 53
  • Respect: +3
    • Mostra profilo
    • Budget Veloce
  • Dispositivo Android:
    Nexus 5, S4 mini, Galaxy Tab S
  • Play Store ID:
    blodhgard
  • Sistema operativo:
    Windows 8.1
Problema creazione/rimozione fragment (necessito di 2 click)
« il: 29 Aprile 2014, 22:57:56 CEST »
0
Ciao a tutti,
ho un problema durante la creazione-cancellazione di un fragment nell'activity:
ogni volta che faccio click su un bottone che dovrebbe aprirmi o chiudermi un fragment devo cliccarlo 2 volte
Codice (Java): [Seleziona]
// Manage Fragments    
        public void Add_Fragment(Fragment fragment)
        {              
                FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();

                // Replace or add whatever is in the fragment_container view with this fragment,
                // and add the transaction to the back stack so the user can navigate back
                transaction.add(R.id.container, fragment);
                transaction.addToBackStack(null);
                transaction.commit();
        }
       
        public void RemoveFragments(View view)
        {
            FragmentManager manager = getSupportFragmentManager();
               
                manager.popBackStack();
       
        }
       
        // Create class Fragment
                public static class IncomeFragment extends Fragment
                {
                       
                        @Override
                    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
                    {
                        // Inflate the layout for this fragment
                        return inflater.inflate(Integer.parseInt(EXTRA_ID), container, false);
                    }
                }

Per creare un fragment uso:
Codice (Java): [Seleziona]
EXTRA_ID = Integer.toString(R.layout.fragment_category);            
        IncomeFragment fragment = new IncomeFragment();
                Add_Fragment(fragment);

I dati che prendo in un fragment li manda all'activity correttamente al primo click.
Grazie mille a chi risponderà  :D

Offline eagledeveloper

  • Translate Team
  • Utente senior
  • ****
  • Post: 516
  • Respect: +37
    • Google+
    • 347516210
    • dark_pinz
    • @WandDStudios
    • Mostra profilo
    • W&D Studios
  • Dispositivo Android:
    HTC One X e HTC One
  • Play Store ID:
    W%26D+Studios
  • Sistema operativo:
    Ubuntu / Windows 7
Re:Problema creazione/rimozione fragment (necessito di 2 click)
« Risposta #1 il: 30 Aprile 2014, 08:41:09 CEST »
0
Dov'e' il codice che gestisce il click del Button?

Cosa hai fatto con l'EXTRA_ID prima lo trasformi in stringa e poi lo rimetti come intero? Per quale motivo?
I numeri contano molto di più del seme.

Offline Blodhgard

  • Utente junior
  • **
  • Post: 53
  • Respect: +3
    • Mostra profilo
    • Budget Veloce
  • Dispositivo Android:
    Nexus 5, S4 mini, Galaxy Tab S
  • Play Store ID:
    blodhgard
  • Sistema operativo:
    Windows 8.1
Re:Problema creazione/rimozione fragment (necessito di 2 click)
« Risposta #2 il: 30 Aprile 2014, 10:08:55 CEST »
0
Perchè avevo definito EXTRA_ID così:
Codice (Java): [Seleziona]
public static String EXTRA_ID = "com.blodhgard.familybudget.ID";Però ora che mi ci fai pensare non conviene molto  :-)

Di Button ne ho tanti, ho definito l'onClick nell' xml però solo quelli che riguardano i fragment mi danno problemi (compresa la freccia che ti fa torna indietro) e il codice è quello che ho postato.
Codice (Java): [Seleziona]
public void Select_Category_Income(View view)
        {
                EXTRA_ID = Integer.toString(R.layout.fragment_category_income);            
                IncomeFragment fragment = new IncomeFragment();
                Add_Fragment(fragment);
        }

Offline eagledeveloper

  • Translate Team
  • Utente senior
  • ****
  • Post: 516
  • Respect: +37
    • Google+
    • 347516210
    • dark_pinz
    • @WandDStudios
    • Mostra profilo
    • W&D Studios
  • Dispositivo Android:
    HTC One X e HTC One
  • Play Store ID:
    W%26D+Studios
  • Sistema operativo:
    Ubuntu / Windows 7
Re:Problema creazione/rimozione fragment (necessito di 2 click)
« Risposta #3 il: 30 Aprile 2014, 11:43:58 CEST »
0
Quell'EXTRA_ID non l'ho proprio capito, lo usi come id del layout e non vedo perche' lo metti in una variabile.

L'unica cosa che magari puoi provare e' cambiare:

Codice (Java): [Seleziona]
transaction.add
in

Codice (Java): [Seleziona]
transaction.replace
I numeri contano molto di più del seme.

Offline Blodhgard

  • Utente junior
  • **
  • Post: 53
  • Respect: +3
    • Mostra profilo
    • Budget Veloce
  • Dispositivo Android:
    Nexus 5, S4 mini, Galaxy Tab S
  • Play Store ID:
    blodhgard
  • Sistema operativo:
    Windows 8.1
Re:Problema creazione/rimozione fragment (necessito di 2 click)
« Risposta #4 il: 30 Aprile 2014, 20:26:59 CEST »
0
Grazie mille delle risposte eagledeveloper
Uso EXTRA_ID perche se passo il valore R. come int alla funzione che mi crea il nuovo fragment mi da errore.
Visto che voglio riutilizzare la stessa funzione per creare fragment diversi ho aggiunto quella variabile esterna.
Comunque seguendo il tuo consiglio l'ho cambiata in un int
Codice (Java): [Seleziona]
        public static int EXTRA_ID;

                   
        @Override
        protected void onCreate(Bundle savedInstanceState)
        {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity);     
           
        }
       
               
        public void Select_Category(View view)
        {
                EXTRA_ID = R.layout.fragment_category_income;            
        IncomeFragment fragment = new IncomeFragment();
                Add_Fragment(fragment);
        }
       
       
       
       
       

        // Manage Fragments    
        public void Add_Fragment(Fragment fragment)
        {              
                FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();

                // Replace or add whatever is in the fragment_container view with this fragment,
                // and add the transaction to the back stack so the user can navigate back
                transaction.add(R.id.container, fragment);
                transaction.addToBackStack(null);
                transaction.commit();
        }
       
        public void RemoveFragments(View view)
        {
            FragmentManager manager = getSupportFragmentManager();
               
                manager.popBackStack();
       
        }
       
        // Create class Fragment
                public static class IncomeFragment extends Fragment
                {
                       
                        @Override
                    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
                    {
                        // Inflate the layout for this fragment
                                //TODO: consiglio tizio forum
                        return inflater.inflate(EXTRA_ID, container, false);
                    }
                }
}

non posso cambiare add con replace perchè la schermata principale la creo con setContentView nell'onCreate.
Qualche idea?

Offline Blodhgard

  • Utente junior
  • **
  • Post: 53
  • Respect: +3
    • Mostra profilo
    • Budget Veloce
  • Dispositivo Android:
    Nexus 5, S4 mini, Galaxy Tab S
  • Play Store ID:
    blodhgard
  • Sistema operativo:
    Windows 8.1
Re:Problema creazione/rimozione fragment (necessito di 2 click)
« Risposta #5 il: 02 Maggio 2014, 10:51:38 CEST »
0
risolto  :-P