所以我花了4个小时试图让我的代码工作,我意识到它是如此愚蠢。我在setContentView(blablabla)之前定义了一个按钮;被称为。为什么这会导致我的应用程序崩溃?
Button schoolNameButton = (Button)findViewById(R.id.schoolNameButton); setContentView(myVIew);
答案 0 :(得分:3)
因为setContentView
实际上是您为当前活动设置UI的地方。这样做,系统知道哪些UI元素与此Activity关联,并且它是所有元素需要初始化的位置 - 在setContentView()
之后。当然,如果你没有做这样的事情:
LinearLayout myLayout = new LinearLayout(this);
setContentView(myLayout);
以下是SDK中setContentView
的解释:
public void setContentView(int layoutResID)
在API级别1中添加从布局资源中设置活动内容。 资源将被夸大,将所有顶级视图添加到 活性。
public void setContentView(View view)
将活动内容设置为显式视图。放置此视图 直接进入活动的视图层次结构。它本身就是一个 复杂的视图层次。调用此方法时,布局 忽略指定视图的参数。宽度和宽度 视图的高度默认设置为MATCH_PARENT。使用你自己的 布局参数,调用setContentView(android.view.View, 相反,android.view.ViewGroup.LayoutParams。
答案 1 :(得分:0)
因为系统需要知道它将在哪个activity / layoutview中执行它的action.so首先我们需要指定布局(setcontent View)。然后所有元素如Buttons,imageViews,TextViews等将是在那之后确定了。