片段:未知的animation名称objectanimator

我试图做两个片段之间的翻转卡animation,如 – > 显示卡片翻转animation通过使用:

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(); } 

if(transactionByMenu){...}工作,但不在else{...}

我会检查我的库和东西,我目前的目标高于api 11但我仍然有这个错误消息:

 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> 

已经有两天,我一直坚持这个,谢谢你。

Solutions Collecting From Web of "片段:未知的animation名称objectanimator"

我相信你正在尝试使用objectAnimator来支持片段库,但它被添加到Android Api级别11。

如果你在xml文件中声明你的对象animation,一定要把它放到animator文件夹中,而不是anim文件夹告诉android使用新的animation框架。

这里从文档 :

为了将使用新属性animationAPI的animation文件与使用旧视图animation框架的animation文件区分开来,从Android 3.1开始, 应该将属性animation的XML文件保存在res / animator /目录中(而不是res / anim /) 。 使用animator目录名是可选的,但是如果您想要使用Eclipse ADT插件(ADT 11.0.0 +)中的布局编辑器工具,则ADT只需searchres / animator /目录中的属性animation资源。

 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();