여러 조각으로 탭 목록을 만들고 있습니다. 주 활동에서 setContentView
을 사용하여 xml 레이아웃을 얻은 다음 findViewById
을 사용하여 해당 UI 요소 구성을 가져 왔음을 확인했습니다.setContentView와 LayoutInflater의 차이점
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
동안 첫 번째 사용이고 onCreateView
동안 두 번째 사용 하나입니까? 어떤 상황에서 나는 그들 중 하나를 선택해야합니까?
응답 해 주셔서 감사합니다. 또한 findViewById가 실행되기 전에 xml 파일을 가져 와서 개체를 만들어야합니까? 나는 공식 문서에서 몇 가지 예를 발견 했으므로 그렇지 않다. 예 : EditText editText = (EditText) findViewById (R.id.email_address); – user782104
나는이 질문을 완전히 이해할 수 있을지 모르겠다. 내 대답이 이해가되지 않는다면, 다시 물어 보자. 액티비티와 뷰에는 모두 findViewById()라는 메서드가 있습니다. 액티비티 버전은 컨텐트 뷰 내에서 주어진 id를 가진 뷰를 검색 할 것입니다 (따라서 내부적으로 contentView.findViewById()를 호출 할 것입니다). 즉, contentView를 사용하기 전에 설정해야합니다. "setContentView"와 마찬가지로 조각에는 "findViewById"(내용보기가 없기 때문에 의미가 있습니다) 메서드가 없습니다. 대신에 getView(). findViewById()를 사용하면됩니다. –
당신은'setContentView'에 대한 대안으로 액티비티에서'LayoutInflater.inflate'를 사용할 수 있다고 언급하지 않았습니다. –