いくつかのフラグメントを含むタブリストを作成しています。メインアクティビティで、setContentView
を使用してレイアウトxmlを取得し、findViewById
を使用して対応するUI要素の構成を取得していることに気付きました。
setContentView(R.layout.fragment_tabs);
mTabHost = (TabHost)findViewById(Android.R.id.tabhost);
mTabHost.setup();
mTabManager = new TabManager(this, mTabHost, Android.R.id.tabcontent);
ただし、別のフラグメントクラスでは、代わりにインフレータを使用する必要があります。
View v = inflater.inflate(R.layout.webview, container, false);
WebView myBrowser=(WebView)v.findViewById(R.id.mybrowser);
そして、両方の関数を使用して、オブジェクトを作成するためのレイアウトxmlを取得しますが、なぜ違いがあるのですか?最初のものはonCreate
の間に使用され、2番目のものはonCreateView
の間に使用されますか?どのような状況で私はそれらのどちらかを選ぶべきですか?
setContentView
はActivity
メソッドのみです。各Activity
には、ID _"@+id/content"
_(つまり、コンテンツビュー)のFrameLayout
が提供されます。 setContentView
で指定するビューは、そのActivity
のビューになります。ビューのインスタンスをこのメソッドに渡すこともできることに注意してください。 setContentView(new WebView(this));
使用しているメソッドのバージョンは、舞台裏でビューを膨らませます。
一方、フラグメントには、ビューを返すonCreateView
というライフサイクルメソッドがあります(ビューがある場合)。これを行う最も一般的な方法は、XMLでビューを拡張し、このメソッドで返すことです。この場合、あなたはそれを自分で膨らませる必要があります。フラグメントにはsetContentView
メソッドがありません