프래그먼트 초기화면 질문드려요!!
조회수 3334회
안녕하세요, 프래그먼트를 기반으로 어플을 만들고 싶습니다.
홈화면으로 하고싶은 메인 activiity의 FrameLayout영역을 통해
메뉴의 버튼을 클릭하면 그 FrameLayout영역에 웹뷰가 띄워지게 하였습니다.
여기서 문제는
메인activiity의 FrameLayout영역에도 웹뷰를 설정하고싶은데
이럴땐 어떻게 해야하나요?
(기본으로 뜨는 FrameLayout의 초기화면을 설정하고 싶다는 말인데 이해하셨을지 모르겠습니다ㅠㅠ)
activity_main.xml
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/fragment_container">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="홈화면입니다."
android:id="@+id/textView"
android:layout_gravity="center"
android:textStyle="bold" />
</FrameLayout>
이게 메인 activity의 코드인데요,
구글링 해보니 이 아닌 태그의 "android: name"를 통해
초기화면을 설정하는 방법이 있었는데,
제가 원래 main java에서 FrameLayout의 addView속성을 써서 코드를 짰는데
FrameLayout fragment_container;
....
final View activity2= LayoutInflater.from(this).inflate(R.layout.activity2, null);
fragment_container.addView(activity2);
fragment로 바꾸면 그부분이 에러가 나더라구요..ㅠㅠ
어떻게 해야할지 모르겠습니다..
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
질문의 의도를 초기 화면으로 프래그먼트를 이용해서 웹뷰를 실행하고 싶다.로 이해했습니다. 의도를 잘 못 이해했다면 알려주세요.
답변은 XML을 통해서 프래그먼트를 추가하는 방법에 대해서 설명합니다. 프래그먼트 생성에 대한 추가적인 방법 및 상세한 내용은 다음 문서를 읽어보세요.
다음과 같이 메인 액티비티의 레이아웃 파일에 fragment를 추가합니다. 이 때, android:name="xxx.xxx.WebViewFragment"에는 인스턴스화 할 프래그먼트 클래스를 넣습니다.
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <fragment android:id="@+id/web" android:name="xxx.xxx.WebViewFragment" android:layout_width="match_parent" android:layout_height="match_parent"/> </FrameLayout>
시스템은 activity_main.xml 레이아웃을 생성할 때, 레이아웃에 지정된 프래그먼트를 생성합니다. 즉, XML에서 작성한 WebViewFragment가 생성됩니다. 이렇게 생성된 프래그먼트는 FragmentManager의 findFragmentById() 함수를 통해서 접근할 수 있습니다.
MainActivity.java
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); WebViewFragment webViewFragment = (WebViewFragment) getSupportFragmentManager().findFragmentById(R.id.web); webViewFragment.loadUrl("https://www.hashcode.co.kr"); } }
웹뷰 프래그먼트는 다음과 같이 간단하게 만들었습니다. 필요에 따라 더 많은 코드를 추가하세요.
WebViewFragment.java
public class WebViewFragment extends Fragment { private WebView webView; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { webView = new WebView(getActivity()); webView.getSettings().setJavaScriptEnabled(true); webView.setWebChromeClient(new WebChromeClient()); webView.setWebViewClient(new WebViewClient()); return webView; } public void loadUrl(String url) { webView.loadUrl(url); } }
위 코드의 결과는 다음과 같습니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
- 답변 감사합니다!! 덕분에 초기화면 띄웠네요 ㅎㅎ 그런데 알려주신대로 코드를 짜니 원래 썼던 프래그먼트 웹뷰 안에서의 뒤로가기가 안먹는데 어떻게 써야하나요??ㅠㅠ 알 수 없는 사용자 2016.7.18 19:27
- 웹뷰 내에서 뒤로가기 처리는 다음 링크를 참고해서 코드를 추가해보세요. http://gun0912.tistory.com/23 알 수 없는 사용자 2016.7.19 10:48
-
댓글 입력