2

我正在制作一个具有这样架构的应用程序

有两个活动

a) 基本活动

b) 主要活动

BaseActivity 扩展了 Activity

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 
  }
}

现在,当我启动应用程序时,MainActivity 被调用,在应用程序将内容视图设置R.Layout.screen_main 为令人沮丧的 2 秒之前,它首先会闪烁一个带有标题的白屏,然后它会执行setContentView(R.Layout.screen_main);

我有一种感觉,当应用程序在超级中处理时,它将内容视图设置为来自 android 的默认布局。OnCreate 在大多数应用程序的情况下,它会显示一个没有任何应用程序标题栏的黑屏,但是在我的应用程序中,它首先显示白屏和标题栏的默认 android 布局,然后加载我的布局,所以我的问题是

为什么会这样,我应该怎么做,应用程序做的第一件事就是设置我的布局,这样当我们启动应用程序时,它会显示我的视图,并且不会首先显示带有标题的白屏,甚至是空白的黑屏换掉这个屏幕就可以了

4

3 回答 3

2

这是因为super.onCreate()调用,每当你的MainActivity执行

因为super.onCreate()

BaseActivity 的 onCreate 将被执行,因此将显示您的 BaseActivity 内容。每当它到达线

setContentView(layout)

它将为您当前的活动设置新内容i.e MainActivity

每当您想要在所有活动中使用通用菜单时,建议使用它,因为您正在设置内容,但是您在 BaseActivity 中设置内容,这使其内容在super.onCreate()调用时显示在当前活动上。所以不要用 BaseActivity 扩展而是扩展 Activity

于 2013-03-29T06:22:47.707 回答
0

这可能是因为你在MainActivity某个地方调用BaseActivity它,它又被递归地调用了一遍。

于 2015-03-10T01:20:45.257 回答
0

尝试

public class MainActivity extends Activity

public class BaseActivity extends Activity 
于 2013-03-29T06:08:21.447 回答