Java onCreate()方法没有调用方法A,但onStart()调用方法A
我有一个onCreate()方法,看起来像这样:Java onCreate()方法没有调用方法A,但onStart()调用方法A,java,android-studio,oncreate,onstart,Java,Android Studio,Oncreate,Onstart,我有一个onCreate()方法,看起来像这样: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity); if (blah) { blahblah; } else { method1();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity);
if (blah) {
blahblah;
} else {
method1();
}
MethodA();
}
@Override
protected void onActivityResult(int a, int b, Intent c) {
super.onActivityResult(b, a, c);
if (b == blah) {
if (a == blah) {
Method1();
}
}
}
onActivityResult方法如下所示:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity);
if (blah) {
blahblah;
} else {
method1();
}
MethodA();
}
@Override
protected void onActivityResult(int a, int b, Intent c) {
super.onActivityResult(b, a, c);
if (b == blah) {
if (a == blah) {
Method1();
}
}
}
方法1():
我有一个methodA(),它应该第一次出现(在它没有出现的那一刻,除非我把methodA()放在onStart()中,然后它只在第二次尝试打开应用程序时出现)
public void MethodA() {
sets text on screen
}
根据我对Android的了解,它应该被调用。根据你提供的信息,我可以做的调试和搜索错误有限,但我想知道你是如何检查你的函数是否被调用的
- 从我所读到的内容来看,您只信任视觉反馈来验证您的函数是否被调用
如果不是这个问题,请验证您是否正在使用片段或活动。在容器中,可能会在前面为片段调用OnCreate方法(当片段不在屏幕上时)。这不会导致任何问题,但当项目以编程方式从另一个片段中移动或移除时可能会出现问题。根据您的描述,似乎onCreate()方法的返回时间比预期的要早。 如果正在设置布局,(即setContentView()调用已完成),则MethodA()肯定会执行,除非如前所述,onCreate()方法在If或else块执行中返回得更早。使用调试器执行步骤调试,并单步跳过If-else块中的method1()等方法调用
super.onCreate(savedInstanceState);
setContentView(R.layout.activity);
/* Did you check this If-Else block so that the control actually */
/* goes down below? to MethodA() */
if (blah) {
blahblah;
} else {
method1();
}
MethodA();
}
由于某些原因,我的Debuggin无法工作,我无法创建日志。是否值得知道,在此活动之前,我有一个MainActivity,它也有一个OnCreate方法(Log.d在那里工作,但不适用于此处提到的onCreate活动。我使用了修复日志记录,似乎该方法确实正在执行。但是,该方法也是100%正确的,因为在onStart()方法中执行时,会显示预期的数据(但仅在第二次打开应用程序时,如前所述)对,我使用了fixed my logging,看起来该方法确实正在执行。但是该方法也是100%正确的,因为当在onStart()方法中执行时,会显示预期的数据(但仅在应用程序第二次打开时,如前所述)您可以检查的内容很少:-文本颜色与背景相同?-正确显示位置约束?-项目重叠?尝试在“MethodA()中执行其他操作方法,例如,将背景颜色改为蓝色/黄色,然后看看会发生什么。因此问题实际上是API的方法。API导致延迟。现在已经修复了。很高兴您能够修复它。如果您发现我的答案有用,请考虑将其标记为答案或投票。
super.onCreate(savedInstanceState);
setContentView(R.layout.activity);
/* Did you check this If-Else block so that the control actually */
/* goes down below? to MethodA() */
if (blah) {
blahblah;
} else {
method1();
}
MethodA();
}