为什么世界上必须在setContentView之后定义一个按钮?

时间:2013-02-15 08:07:37

标签: android button view android-activity

所以我花了4个小时试图让我的代码工作,我意识到它是如此愚蠢。我在setContentView(blablabla)之前定义了一个按钮;被称为。为什么这会导致我的应用程序崩溃? Button schoolNameButton = (Button)findViewById(R.id.schoolNameButton); setContentView(myVIew);

2 个答案:

答案 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等将是在那之后确定了。