我正在使用Xamarin,AppCompat v4和v7包(Xamarin.Android.Support.v7.AppCompat.23.0.1.3)创建Android应用程序。当我完成第二项活动时,我需要反转场景过渡动画。我找到了解决方法here。因此,我在从FinishAfterTransition派生的类中的覆盖OnBackPressed中使用Android.Support.V7.App.AppCompatActivity方法:

public class BaseToolbarActivity : AppCompatActivity
    {
    public override void OnBackPressed()
    {
        base.OnBackPressed();
        FinishAfterTransition();
    }
}


BaseToolbarActivity子类的活动中按“后退”按钮时,出现以下错误。

10-20 12:41:13.815 E/AndroidRuntime( 9557): FATAL EXCEPTION: main
10-20 12:41:13.815 E/AndroidRuntime( 9557): Process: GetTruck.ClientApp, PID: 9557
10-20 12:41:13.815 E/AndroidRuntime( 9557): java.lang.NoSuchMethodError: no method with name='finishAfterTransition' signature='()V' in class Landroid/app/Activity;
10-20 12:41:13.815 E/AndroidRuntime( 9557):     at md5b2985d08cc2bafff83c57ef84572ed3f.CreateOrderActivity.n_onCreate(Native Method)
10-20 12:41:13.815 E/AndroidRuntime( 9557):     at md5b2985d08cc2bafff83c57ef84572ed3f.CreateOrderActivity.onCreate(CreateOrderActivity.java:28)
10-20 12:41:13.815 E/AndroidRuntime( 9557):     at android.app.Activity.performCreate(Activity.java:5411)
10-20 12:41:13.815 E/AndroidRuntime( 9557):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
10-20 12:41:13.815 E/AndroidRuntime( 9557):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2396)
10-20 12:41:13.815 E/AndroidRuntime( 9557):     at android.app.ActivityThread.access$800(ActivityThread.java:139)
10-20 12:41:13.815 E/AndroidRuntime( 9557):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1293)
10-20 12:41:13.815 E/AndroidRuntime( 9557):     at android.os.Handler.dispatchMessage(Handler.java:102)
10-20 12:41:13.815 E/AndroidRuntime( 9557):     at android.os.Looper.loop(Looper.java:149)
10-20 12:41:13.815 E/AndroidRuntime( 9557):     at android.app.ActivityThread.main(ActivityThread.java:5257)
10-20 12:41:13.815 E/AndroidRuntime( 9557):     at java.lang.reflect.Method.invokeNative(Native Method)
10-20 12:41:13.815 E/AndroidRuntime( 9557):     at java.lang.reflect.Method.invoke(Method.java:515)
10-20 12:41:13.815 E/AndroidRuntime( 9557):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:817)
10-20 12:41:13.815 E/AndroidRuntime( 9557):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:633)
10-20 12:41:13.815 E/AndroidRuntime( 9557):     at dalvik.system.NativeStart.main(Native Method)


无论我以什么顺序调用OnBackPressed中的方法,我的应用程序都崩溃了。我也尝试过重建项目,在其他方法中都调用FinishAfterTransition,都一样。谷歌搜索什么都没有告诉我。看来我是地球上唯一遇到此错误的人。我究竟做错了什么?

最佳答案

FinishAfterTransition实际上是仅在API 21及更高版本(http://developer.android.com/reference/android/app/Activity.html#finishAfterTransition())中使用的Activity(不是AppCompatActivity)方法,因此,如果以低于API 21的任何方式运行应用程序,则会遇到该错误,因为它不存在。

不幸的是,由于它不是AppCompatActivity的一部分,因此您必须找到另一种解决方案以实现所需的结果(或仅在API> = 21上调用它)。

希望有帮助!

10-04 12:12