为什么在调用FinishAfterTransition时会抛出NoSuchMethodError?

时间:2015-10-20 17:05:29

标签: java android android-activity xamarin android-appcompat

我正在使用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,都是一样的。谷歌搜索告诉我什么。看来我是地球上唯一遇到过这个错误的人。我做错了什么?

1 个答案:

答案 0 :(得分:1)

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

不幸的是,因为它不是AppCompatActivity的一部分,所以你必须找到另一个解决方案来实现你想要的结果(或者只在API> = 21上调用它)。

希望有所帮助!