我正在制作一个具有此类架构的应用
有两项活动
a)BaseActivity
b)MainActivity
BaseActivity扩展了活动
和
mainActivity扩展了BaseActivity
现在
public class MainActivity extends BaseActivity {
onCreate(Bundle SavedInstance) {
super.OnCreate(SavedInstance)
setContentView(R.Layout.screen_main)
}
}
和
public class BaseActivity extends Activity {
onCreate(Bundle SavedInstance) {
super.OnCreate(SavedInstance)
//not doing anything else in on create
}
}
现在,当我启动应用程序时,会在应用程序将内容视图设置为R.Layout.screen_main
之前调用MainActivity
对于令人沮丧的2秒,它首先闪烁一个白色屏幕,然后执行setContentView(R.Layout.screen_main);
我有一种感觉它将内容视图设置为Android的默认布局,而应用程序正在处理超级。OnCreate
,如果是大多数应用程序而不是它显示黑屏而没有应用程序的任何小问题但是我的应用程序它首先显示白色屏幕和tittle栏的默认Android布局,然后它加载我的布局
所以我的问题是
为什么这样,我应该怎么做才能让应用程序做的第一件事就是设置我的布局,以便在我们启动应用程序时显示我的视图并且不会首先显示白色屏幕甚至是这个屏幕的空白黑屏会安装
答案 0 :(得分:2)
这是因为super.onCreate()
电话,只要你的 MainActivity 执行
由于super.onCreate()
BaseActivity的onCreate将被执行,因此将显示您的BaseActivity内容。 并且每当它到达线
setContentView(layout)
它会为您当前的活动i.e MainActivity
每当您想要在所有活动中使用常用菜单时,建议您使用它,因为您正在设置内容,但您要在BaseActivity中设置内容,使其在super.onCreate()
时显示当前活动的内容打电话。
所以不要使用BaseActivity扩展而是扩展Activity
答案 1 :(得分:0)
尝试
public class MainActivity extends Activity
和
public class BaseActivity extends Activity
答案 2 :(得分:0)
这可能是因为你在MainActivity
的某个地方呼叫BaseActivity
,并且它再次被递归地调用。