- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试重写从 Activity 派生的类(称为 NativeActivity),这样我就可以设置我自己用 Java 创建的内容 View ,同时保留其其余功能。我必须使用 NativeActivity,因为这是在 Xperia Play 上获取触摸板输入的唯一方法。我需要覆盖的方法是 NativeActivity.onCreate() 方法,因为这是设置我不想要的内容 View 的地方。问题是,如果我不在覆盖的 onCreate() 方法中调用 super.onCreate(),则会抛出 SuperNotCalledException。这是来自 Activity 类。但是 Activity.onCreate() 方法所做的只是设置一个 bool 值:
protected void onCreate(Bundle savedInstanceState) {
mVisibleFromClient = !mWindow
.getWindowStyle()
.getBoolean(
com.android.internal.R.styleable.Window_windowNoDisplay,
false);
mCalled = true;
}
我可以使用 Activity.getWindow() 方法在我自己的代码中进行检查。不幸的是,mCalled bool 值是私有(private)的,所以我不能在我自己的代码中将它设置为 true。我似乎无法弄清楚如何绕过这个要求。有什么想法吗?
最佳答案
当您在 Activity 上覆盖此方法时,您必须调用 super.onCreate(savedInstance)
。
深入研究代码,这项检查看起来是为了确保任何自定义 Instrumentation 都能正常工作。并且要求在我们所有自定义 Activity 中的某些方法上调用 super 是实现的意外结果。
无需详细说明为什么这是一个糟糕的 OOP 设计,我可以说至少它足够简单,只需调用 super.onCreate(savedInstanceState)
你的 onCreate() 方法。从代码中可以看出,没有不良副作用。
关于Android:是否有解决 SuperNotCalledException 的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7829881/
在 Android 应用程序中覆盖方法时,很多时候我们需要调用 super 方法。 在某些情况下,例如在 fragment 的 onActivityCreated() 方法中,如果未调用 super,
我在 fragment 内使用 onDestroy 来确保退出应用程序时停止处理程序(用于为按钮设置动画),如下面的代码所示: @Override public void onDestroy () {
我的代码中遇到 SuperNotCalledException 问题。 我有一个包含 NavigationDrawerFragment 的 Activity,并且此 Exception 仅发生在“MO
我正在尝试重写从 Activity 派生的类(称为 NativeActivity),这样我就可以设置我自己用 Java 创建的内容 View ,同时保留其其余功能。我必须使用 NativeActivi
我有一个 Android 应用程序,其调试版本运行良好。然而,它的发布版本,其中包括使用 ProGuard 进行混淆(配置如下所示),无法正常工作,并且总是在启动时崩溃,并显示以下日志: 01-26
我很好奇 android 如何检测我是否在我的 onCreate 方法中调用了 super.onCreate(或其他一些方法)。 我猜它使用了一个标志,并在 Activity.class 中看到了一个
这是我的代码: 第一个 Activity:: public class ImageExercise extends Activity { /** Called when the activit
在Activity 类中,Android 提供super() must be called 的运行时执行。用于覆盖生命周期回调方法。如果您忘记这样做,它会抛出 SuperNotCalledExcept
我是 android 的新用户,我已经建立了一个 android 数据库连接并创建了表应用程序,但在运行时它会产生错误。 听到一个错误: 07-15 16:25:55.404: ERROR/Andr
我正在尝试使用 developer.android.com SharedPreferences 中的代码测试 SharedPreferences .我试着稍微改变一下,因为他们说 onStop "ma
我正在使用一些传感器 - MediaRecorder 和 MediaPlayer、NotificationManager、WakeLock 和 LocationListener... 这是我的 onR
我正在处理现有的代码库。我正在尝试为 Activity 添加深层链接。但是,当我测试深层链接时,它会转到 Activity,然后加载 Fragment,然后强制关闭并显示以下错误。当我调试它时,它会上
这是我的 Android 媒体播放器代码。当我在 MediaPlayer mp = new MediaPlayer() 行断点以 Debug 模式运行时,我不知道这段代码中缺少什么。 zip 文件夹中
uncaught handler:thread main exiting due to uncaught exception android.app.SuperNotCalledException:A
我是一名优秀的程序员,十分优秀!