0

だから私は自分のコードを動作させるために 4 時間費やしただけで、それが非常にばかげていることに気付きました。setContentView(blablabla); の前にボタンを定義していました。と呼ばれていました。いったいなぜ、これが原因でアプリがクラッシュしたのでしょうか? Button schoolNameButton = (Button)findViewById(R.id.schoolNameButton); setContentView(myVIew);

4

2 に答える 2

3

setContentView実際には、現在のアクティビティの UI を設定している場所だからです。システムは、どの UI 要素がこのアクティビティに関連付けられているかを認識し、すべての要素を初期化する必要がある場所を認識します - after setContentView()。もちろん、このようなことをしていない場合:

LinearLayout myLayout = new LinearLayout(this);
setContentView(myLayout);

setContentViewSDK からの説明は次のとおりです。

public void setContentView (int layoutResID)

API レベル 1 で追加 レイアウト リソースからアクティビティ コンテンツを設定します。リソースが膨張し、すべての最上位ビューがアクティビティに追加されます。

public void setContentView (ビュー ビュー)

アクティビティ コンテンツを明示的なビューに設定します。このビューは、アクティビティのビュー階層に直接配置されます。それ自体が複雑なビュー階層になる場合があります。このメソッドを呼び出すと、指定されたビューのレイアウト パラメータは無視されます。ビューの幅と高さの両方がデフォルトで MATCH_PARENT に設定されています。独自のレイアウト パラメータを使用するには、代わりに setContentView(android.view.View, android.view.ViewGroup.LayoutParams) を呼び出します。

于 2013-02-15T08:11:47.760 に答える
0

これは、システムがどのアクティビティ/レイアウトビューでアクションを実行するかを知る必要があるためです。まず、レイアウト(setcontent View)を指定する必要があります。次に、Buttons、imageViews、TextViewsなどのすべての要素がその後に識別されます。 。

于 2013-02-15T08:21:45.600 に答える