Java 调用超级类onResume()和onCreae()
我有两个片段A和B。B扩展片段A,所以Java 调用超级类onResume()和onCreae(),java,android,android-fragments,Java,Android,Android Fragments,我有两个片段A和B。B扩展片段A,所以 public class A extends Fragment{ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //other stuff } @Override public void onResume() { su
public class A extends Fragment{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//other stuff
}
@Override
public void onResume()
{
super.onResume();
someFunctionOnlyUsefulInFragmentA()
}
}
第二节课:
public class B extends A{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//other stuff
}
@Override
public void onResume()
{
super.onResume();
//Problem! I don't want to call function "someFunctionOnlyUsefulInFragmentA()"
}
}
问题是,我不想执行片段A的onResume()
和onCreate()
方法中的所有代码,而是执行一些自定义代码,这些代码只在片段B中使用。但是android强制我调用super.onCreate()
和super.onResume()
为了执行片段B的onCreate()
或onResume()
方法中的一些自定义代码,而不调用片段A中的自定义代码,我该怎么做
我需要改变我的整个代码设计吗?如果是这样,怎么做?您可以做几件事:
Fragment
onResume()中的someFunctionOnlyUsefulInFragmentA()
的效果
someFunctionOnlyUsefulInFragmentA()
放在类A的onResume()
中,或者在其前面放置一个条件,以防止在某些情况下调用该函数你可以做几件事:
Fragment
onResume()中的someFunctionOnlyUsefulInFragmentA()
的效果
someFunctionOnlyUsefulInFragmentA()
放在类A的onResume()
中,或者在其前面放置一个条件,以防止在某些情况下调用该函数您的问题与继承有关,而不是与Android片段有关。例如,您需要重新考虑类的设计,而不是从类
A
派生类B
,引入类BaseFragment
,它们都有A
和B
派生(并共享一些功能),并将someFunctionOnlyUsefulInFragmentA()
仅在片段中。您试图在上面做的显然违反了。您的问题与继承有关,而不是与Android片段有关。例如,您需要重新考虑类的设计,而不是从类A
派生类B
,引入类BaseFragment
,它们都有A
和B
派生(并共享一些功能),并将someFunctionOnlyUsefulInFragmentA()
仅在片段中。您试图在上面执行的操作显然违反了。那么,只需将代码放在片段A的onResume中,您就不必调用super.onCreate()
和super.onResume()
。“Android强迫你”是什么意思?好吧,我确实需要在片段A的onResume()方法中执行一些代码!如果我没有包含超级调用,我的应用程序就会崩溃。如果{call method}的instanceof A{not}
@TimCastelijns,你能详细说明一下你将把代码放在哪里吗?那么您将如何检查该实例呢?那么只需不将代码放在片段A的onResume中,您就不必调用super.onCreate()
和super.onResume()
。“Android强迫你”是什么意思?好吧,我确实需要在片段A的onResume()方法中执行一些代码!如果我没有包含超级调用,我的应用程序就会崩溃。如果{call method}的instanceof A{not}
@TimCastelijns,你能详细说明一下你将把代码放在哪里吗?你会如何检查实例?选项2会非常愚蠢(无意冒犯)你不知道它做了什么,也许它做了一些非常无用的事情,你可以很容易地还原它。不管它做什么,这是愚蠢的概念。是的,问题一点也不愚蠢。这个家伙想创建一个不做其父类所做的事情的类。当你想到继承的概念时,这是可以理解的。对吗?选项2会非常愚蠢(无意冒犯)你不知道它做了什么,也许它做了一些非常无用的事情,你可以很容易地将其还原。不管它做什么,这是一个愚蠢的概念。是的,问题一点也不愚蠢。这个家伙想创建一个不做其父类所做的事情的类。当你想到继承的概念时,这是可以理解的。对吗?利斯科夫替换原理为+1井利斯科夫替换原理为+1井利斯科夫替换原理