2013-07-01 14 views
19

entrare in codice come questo:.android.support.v4.app.FragmentTransaction richiesto

FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); 

esce con questo errore "android.support.v4.app.FragmentTransaction transazione = getSupportFragmentManager() beginTransaction() ;" e ha questo come una soluzione rapida, che in effetti rimuovere l'errore:

android.support.v4.app.FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); 

e sto scrivendo questo nella mia attività principale che si estende FragmentActivity. Qualcuno sa perché? Ho incluso:

import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentActivity; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentPagerAdapter; 
import android.support.v4.view.ViewPager; 

EDIT

DescriptionFragment fragment = new DescriptionFragment(); 
      android.support.v4.app.FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
      ft.replace(R.id.pager, fragment); 
      ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); 
      ft.commit(); 

cambiare getSupportFragmentManager() per getFragmentManager() mi impone di cambiare DescriptionFragment a android.app.Fragment ... tutte le idee?

+0

Add ' importare android.support.v4.app.FragmentTransaction; 'o' importare android.support.v4.app. *; ' – CRUSADER

+0

grazie ... sembra darmi questo errore: l'importazione android.support.v4.app.FragmentTransaction collide con un'altra dichiarazione di importazione –

risposta

31

Con getSupportFragmentManager() si ottiene il supportoLibrary fragmentManager anziché i sistemi fragmentManager. Quindi stai lavorando con una transazione di supportlibrary.

Questo è il motivo per cui è necessario aggiungere tutte queste importazioni e utilizzare android.support.v4.app.

Se si desidera ottenere il sistema fragmentManager, provare a utilizzare getFragmentManager() invece getSupportFragmentManager().

Spero che questo aiuti

+0

grazie per il vostro feedback ... per favore controlla la mia domanda aggiornata mi sta ancora dando problemi –

+0

FragmentDescription è una classe creat edito da te? È di tipo Fragment o SupportFragment? – jaumebd

+0

FragmentDescription viene creato da me ed estende Fragment –

2

Avere importare file android.support.v4.jar al progetto ??

+0

non sai cosa intendi aggiungendo un file .jar? l'ho aggiunto nel mio percorso di build –

2

Ok ... Basta fare un metodo per frammento e chiamare questo come:

void addfragment(Fragment fragment, boolean addBacktoStack, int transition) { 
    FragmentTransaction ft = getFragmentManager().beginTransaction(); 
    ft.replace(R.id.simple_fragment, fragment); 
    ft.setTransition(transition); 
    if (addBacktoStack) 
     ft.addToBackStack(null); 
    ft.commit(); 

} 

Ora Basta chiamare il Frammento:

addfragment(new DescriptionFragment(this),true, FragmentTransaction.TRANSIT_FRAGMENT_OPEN); 
+0

la stessa cosa sembra accadere .. questo errore appare per ft.replace: il metodo replace (int, Fragment) nel tipo FragmentTransaction non è applicabile per gli argomenti (int, Fragment). e questo può essere risolto cambiando l'inizio di questo: void addfragment (android.app.Fragment fragment, booleano addBacktoStack, transizione int) { –

+0

Devi modificare android.support.v4.Fragment. Penso che questo errore si verifichi a causa dell'estensione del frammento per android.app.Fragment, quindi devi utilizzare android.support.v4.Fragment .. in questo modo otterrai una soluzione migliore. –

3

provare questo

public class DescriptionFragment estende android.support.v4.app.Fragment

invece di semplicemente Frammento.

1

getActivity() slove il mio problema android.app.FragmentManager fragmentManager = getActivity().getFragmentManager();

1

In attività di importazione android.app.Fragment .. In Frammento estendere con android.app.Fragment .. questo ha risolto il mio problema ...

Problemi correlati