web-dev-qa-db-fra.com

Fragment: nom d'animation inconnu objectanimator

J'essaie de faire une animation de retournement de carte entre deux fragments comme dans -> Affichage des animations de retournement de carte en utilisant:

private void switchFragment(Fragment fragment) {
        FragmentManager fragmentManager = getSupportFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager
                .beginTransaction();

        if ((fragment != null) && !(fragment.equals(currentFragment))) {

            if (transactionByMenu) {
                fragmentTransaction.setCustomAnimations(Android.R.anim.fade_in,
                        Android.R.anim.fade_out);
            } else {
                fragmentTransaction.setCustomAnimations(
                        R.animator.card_flip_right_in,
                        R.animator.card_flip_right_out);
            }

            Fragment nextFragment = fragment;
            fragmentTransaction.hide(currentFragment);
            fragmentTransaction.show(nextFragment);

            currentFragment = nextFragment;
        }
        fragmentTransaction.commit();
    }

La transaction dans if(transactionByMenu){...} fonctionne mais pas dans else{...}

Je vérifierais mes bibliothèques et mes trucs et je cible actuellement plus de api 11 Mais j'ai toujours ce message d'erreur:

05-22 11:32:34.706: E/AndroidRuntime(6801): FATAL EXCEPTION: main
05-22 11:32:34.706: E/AndroidRuntime(6801): Java.lang.RuntimeException: Unknown animation name: objectAnimator
05-22 11:32:34.706: E/AndroidRuntime(6801):     at Android.view.animation.AnimationUtils.createAnimationFromXml(AnimationUtils.Java:124)
05-22 11:32:34.706: E/AndroidRuntime(6801):     at Android.view.animation.AnimationUtils.createAnimationFromXml(AnimationUtils.Java:114)
05-22 11:32:34.706: E/AndroidRuntime(6801):     at Android.view.animation.AnimationUtils.createAnimationFromXml(AnimationUtils.Java:91)
05-22 11:32:34.706: E/AndroidRuntime(6801):     at Android.view.animation.AnimationUtils.loadAnimation(AnimationUtils.Java:72)
05-22 11:32:34.706: E/AndroidRuntime(6801):     at Android.support.v4.app.FragmentManagerImpl.loadAnimation(FragmentManager.Java:710)
05-22 11:32:34.706: E/AndroidRuntime(6801):     at Android.support.v4.app.FragmentManagerImpl.hideFragment(FragmentManager.Java:1187)
05-22 11:32:34.706: E/AndroidRuntime(6801):     at Android.support.v4.app.BackStackRecord.run(BackStackRecord.Java:610)
05-22 11:32:34.706: E/AndroidRuntime(6801):     at Android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.Java:1431)
05-22 11:32:34.706: E/AndroidRuntime(6801):     at Android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.Java:420)
05-22 11:32:34.706: E/AndroidRuntime(6801):     at Android.os.Handler.handleCallback(Handler.Java:725)
05-22 11:32:34.706: E/AndroidRuntime(6801):     at Android.os.Handler.dispatchMessage(Handler.Java:92)
05-22 11:32:34.706: E/AndroidRuntime(6801):     at Android.os.Looper.loop(Looper.Java:137)
05-22 11:32:34.706: E/AndroidRuntime(6801):     at Android.app.ActivityThread.main(ActivityThread.Java:5041)
05-22 11:32:34.706: E/AndroidRuntime(6801):     at Java.lang.reflect.Method.invokeNative(Native Method)
05-22 11:32:34.706: E/AndroidRuntime(6801):     at Java.lang.reflect.Method.invoke(Method.Java:511)
05-22 11:32:34.706: E/AndroidRuntime(6801):     at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:793)
05-22 11:32:34.706: E/AndroidRuntime(6801):     at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:560)
05-22 11:32:34.706: E/AndroidRuntime(6801):     at dalvik.system.NativeStart.main(Native Method)

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
    package="package.stage.stackoverflow"
    Android:versionCode="3"
    Android:versionName="2.0.1" >

    <uses-sdk
        Android:minSdkVersion="11"
        Android:targetSdkVersion="17" />

    <permission
        Android:name="package.stage.stackoverflow.permission.MAPS_RECEIVE"
        Android:protectionLevel="signature" />

    <uses-permission Android:name="package.stage.stackoverflow.permission.MAPS_RECEIVE" />
    <uses-permission Android:name="Android.permission.INTERNET" />
    <uses-permission Android:name="Android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission Android:name="Android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission Android:name="Android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission Android:name="Android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission Android:name="com.google.Android.providers.gsf.permission.READ_GSERVICES" />

    <uses-feature
        Android:glEsVersion="0x00020000"
        Android:required="true" />

    <application
        Android:allowBackup="true"
        Android:icon="@drawable/ic_launcher"
        Android:label="@string/app_name"
        Android:theme="@style/SampleTheme" >
        <uses-library Android:name="com.google.Android.maps" />

        <activity
            Android:name="package.stage.stackoverflow.MyFragmentActivity"
            Android:label="@string/app_name"
            Android:launchMode="singleTop"
            Android:screenOrientation="portrait" >
            <intent-filter>
                <action Android:name="Android.intent.action.MAIN" />

                <category Android:name="Android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <meta-data
            Android:name="com.google.Android.maps.v2.API_KEY"
            Android:value="my Key" />
    </application>

</manifest>

Cela fait deux jours que je suis coincé avec ça, merci d'avance.

30
Glenn Sonna

Je pense que vous essayez d'utiliser objectAnimator dans la bibliothèque de fragments de support, mais il a été ajouté dans Android Api niveau 11.

51
DoruAdryan

Si vous avez déclaré l'animation de votre objet dans un fichier xml, assurez-vous de la placer dans le dossier de l'animateur et non dans le dossier dossier anim pour indiquer à Android d'utiliser le nouveau framework d'animation).

Voici de la documentation :

Pour distinguer les fichiers d'animation qui utilisent les nouvelles API d'animation de propriété de ceux qui utilisent le cadre d'animation de vue hérité, en commençant par Android 3.1, , vous devez enregistrer les fichiers XML pour les animations de propriétés dans le répertoire res/animator/(au lieu de res/anim /) . L'utilisation du nom du répertoire animator est facultative, mais nécessaire si vous souhaitez utiliser les outils de l'éditeur de mise en page dans Eclipse Plugin ADT (ADT 11.0.0+), car ADT recherche uniquement dans le répertoire res/animator/les ressources d'animation de propriété.

17
ArnaudR
FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
                FragmentTransaction fragmentTransaction = fragmentManager
                        .beginTransaction();
                fragmentTransaction.setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left,R.anim.slide_in_left, R.anim.slide_out_right);
                ProductOverview commentFragment = new ProductOverview();
                commentFragment.setArguments(b);
                fragmentTransaction.replace(R.id.product_container, commentFragment);
                fragmentTransaction.addToBackStack(null);
                fragmentTransaction.commit();
3
OMAK