我想覆盖从Activity派生的类(称为NativeActivity),所以我可以在Java中创建自己的内容视图,而将其余的功能留在圆括号中。我必须使用NativeActivity,因为它是在Xperia Play上获取触控板输入的唯一方法。我需要重写的方法是NativeActivity.onCreate()方法,因为这是我不想要的内容视图被设置的位置。问题是,如果我没有在重写的onCreate()方法中调用super.onCreate(),则会引发SuperNotCalledException。这来自Activity类。但是,所有的Activity.onCreate()方法并设置一个布尔值:Android:有没有解决SuperNotCalledException的方法?
protected void onCreate(Bundle savedInstanceState) {
mVisibleFromClient = !mWindow
.getWindowStyle()
.getBoolean(
com.android.internal.R.styleable.Window_windowNoDisplay,
false);
mCalled = true;
}
我能做到这一点检查在我自己的代码,使用Activity.getWindow()方法。不幸的是,mCalled布尔值是私有的,所以我不能在我自己的代码中将其设置为true。我似乎无法弄清楚如何绕过这个要求。有任何想法吗?
不良副作用来自NativeActivity.onCreate()方法。在Java中没有super.super。重写该方法的重点是我不想调用它。 – paulscode
@ user1002212我不知道我是否理解你。这只是个人的愿望,不要调用super.onCreate()? – spatulamania
这没什么个人的,这是一个要求。正如我上面的问题所述,我的类扩展了NativeActivity,而不是Activity。我想避免调用NativeActivity.onCreate(如果我调用super.onCreate,会发生这种情况),因为在NativyActivity.onCreate中它设置了内容视图(我不想这么做)。 – paulscode