为什么在调用 FinishAfterTransition 时会抛出 NoSuchMethodError?
Why does NoSuchMethodError get thrown when FinishAfterTransition is called?
我正在使用 Xamarin、AppCompat v4 和 v7 包 (Xamarin.Android.Support.v7.AppCompat.23.0.1.3) 创建 Android 应用程序。当我完成第二个 activity 按下后退按钮时,我需要反转场景转换动画。我找到了解决方案 here。所以,我在 Android.Support.V7.App.AppCompatActivity
:
派生的 class 中使用 FinishAfterTransition
方法覆盖 OnBackPressed
public class BaseToolbarActivity : AppCompatActivity
{
public override void OnBackPressed()
{
base.OnBackPressed();
FinishAfterTransition();
}
}
当我在 BaseToolbarActivity
的 activity 子classed 中按下后退按钮时,出现以下错误。
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.access0(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 实际上是一个 Activity(不是 AppCompatActivity)方法,只在 API 21 及更高版本(http://developer.android.com/reference/android/app/Activity.html#finishAfterTransition())中,因此如果你 运行 小于 API 21 的应用程序,您将 运行 进入该错误,因为它不存在。
不幸的是,因为它不是 AppCompat 的一部分Activity,您必须找到另一个解决方案来实现您想要的结果(或者只在 API >= 21 上调用它)。
希望对您有所帮助!
我正在使用 Xamarin、AppCompat v4 和 v7 包 (Xamarin.Android.Support.v7.AppCompat.23.0.1.3) 创建 Android 应用程序。当我完成第二个 activity 按下后退按钮时,我需要反转场景转换动画。我找到了解决方案 here。所以,我在 Android.Support.V7.App.AppCompatActivity
:
FinishAfterTransition
方法覆盖 OnBackPressed
public class BaseToolbarActivity : AppCompatActivity
{
public override void OnBackPressed()
{
base.OnBackPressed();
FinishAfterTransition();
}
}
当我在 BaseToolbarActivity
的 activity 子classed 中按下后退按钮时,出现以下错误。
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.access0(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 实际上是一个 Activity(不是 AppCompatActivity)方法,只在 API 21 及更高版本(http://developer.android.com/reference/android/app/Activity.html#finishAfterTransition())中,因此如果你 运行 小于 API 21 的应用程序,您将 运行 进入该错误,因为它不存在。
不幸的是,因为它不是 AppCompat 的一部分Activity,您必须找到另一个解决方案来实现您想要的结果(或者只在 API >= 21 上调用它)。
希望对您有所帮助!