web-dev-qa-db-fra.com

AppCompat et fragment ne fonctionnent pas

02-19 11:49:17.369: E/AndroidRuntime(4209): Java.lang.NoClassDefFoundError: com.slidingmenus.fragments.HomeFragment
02-19 11:49:17.369: E/AndroidRuntime(4209):     at com.slidingmenus.MainActivity.displayCategoryView(MainActivity.Java:242)
02-19 11:49:17.369: E/AndroidRuntime(4209):     at com.slidingmenus.MainActivity.onCreate(MainActivity.Java:121)

Essayé chacun et toutes les étapes suggérées dans le débordement de la pile, mais ils n'ont pas aidé.

Cela fonctionne sans erreur en 4.0+ mais dans 2.3.x dispositifs sa donnant Java.lang.noclassDeffondant

line 242: fragment = new HomeFragment();

Mes importations de fragments sont:

import Android.app.Fragment;
import Android.app.FragmentManager;

et j'utilise:

FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction().replace(R.id.frame_container, fragment).commit();

Voici mon fragment de maison:

import Android.app.Fragment;
import Android.os.Bundle;
import Android.view.LayoutInflater;
import Android.view.View;
import Android.view.ViewGroup;   

public class HomeFragment extends Fragment {        
   public HomeFragment(){}

   @Override
   public View onCreateView(LayoutInflater inflater, ViewGroup container,
           Bundle savedInstanceState) {

           View rootView = inflater.inflate(R.layout.layout_main_fragment,container, false);

           return rootView;
    }
 }

Passé toute la matinée à essayer de résoudre ce problème. toujours pas de chance. Toute aide est grandement appréciée.

Merci

16
prashantwosti

Vous devez utiliser Fragment de la bibliothèque de support.

import Android.support.v4.app.Fragment;
import Android.support.v4.app.FragmentManager;

Vous devez également utiliser getSupportFragmentManager() et que vous utilisez AppCompat votre activité doit prolonger ActionbarActivity.

 FragmentManager fragmentManager = getSupportFragmentManager();

Mettre à jour:

ActionBarActivity est une utilisation obsolète AppCompatActivity de la bibliothèque de support. N'oubliez pas de mettre à jour votre référentiel de support sur le dernier.

22
Raghunandan

Essayez ce code importer:

import Android.support.v4.app.Fragment;

Et utilise

    Fragment fragment = new HomeFragment();
    Android.support.v4.app.FragmentManager fragmentManager = getSupportFragmentManager();
    fragmentManager.beginTransaction().replace(R.layout.layout_main_fragment, fragment).commit();
2
LONGMAN

J'ai confronté le même problème et je l'ai résolu par bibliothèque d'importation de support et utilisé

import Android.support.v4.app.Fragment;
import Android.support.v4.app.FragmentManager;

Au lieu

import Android.app.Fragment;
import Android.app.FragmentManager;
1
M D