프래그먼트 겹침 문제


안드로이드 질문 드립니다.

익스펜더블 리스트뷰를 썼고,

각 메뉴를 누르면 일반 프래그먼트와 프래그먼트 웹뷰 등도 띄우도록 하였습니다.

일반 프래그먼트를 띄운 다음에 프래그먼트 웹뷰를 띄우면 웹뷰가 일반 프래그먼트 뒤에 가려진 상태로 띄워집니다.

실행이 잘 되긴하는데 프래그먼트가 겹쳐져서 아래에 있는 웹뷰가 보이지 않는 문제를 해결하고 싶습니다.

MainActivity.java

public class MainActivity extends AppCompatActivity {


// 메인화면을 프래그먼트 웹뷰로 띄운 모습입니다
    static public class MyWebViewFragment 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());
            webView.loadUrl("http:///...~");


            return webView;


        }
    }



...



// 첫번째 메뉴 ,, 일반 프래그먼트
 menu01Activity fragment = new menu01Activity();
                                FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
                                fragmentTransaction.replace(R.id.myweb_fragment, fragment);
                                fragmentTransaction.commit();





//두번째 메뉴 ,,  프래그먼트 웹뷰
 MyWebViewFragment fragment2 = (MyWebViewFragment)getFragmentManager().findFragmentById(R.id.myweb_fragment);
                                WebView webView = fragment2.webView;

                                webView.getSettings().setJavaScriptEnabled(true);
                                webView.loadUrl("http://m.daum.net");





프래그먼트 위에 프래그먼트를 띄우는거면 add 대신 replace 를 쓰면 된다고 알고 있는데, 이 경우는 프래그먼트 위에 프래그먼트 웹뷰를 띄우는 것이라 어떻게 해야할지.. 잘모르겠네요

  • 2016년 07월 20일에 수정됨
    루비와 파이썬을 좋아합니다. 새로운 언어를 배우는것도 좋아해요. 모바일 게임도 조금 만들어 봤습니다.
  • 2016년 07월 19일에 작성됨

조회수 381


1 답변


겹치는 것이 문제라면(=웹뷰가 보여야하는데 다른 프래그먼트에 의해 가려지는 현상) replace(), remove() 함수를 사용해서 해결할 수 있습니다.

올려주신 코드에서 첫번째 메뉴를 클릭하면 replace() 함수를 호출하는데 두번째 메뉴를 클릭하면 http://m.daum.net으로 웹페이지 이동에 대한 처리만 하고 있습니다. 따라서 현재 코드로는 웹뷰가 보이지 않는 것이 맞고요.

메뉴를 클릭했을 때 특정 프래그먼트가 보이게 하고 싶다면 이 부분에서 프래그먼트를 추가, 삭제, 교체하는 작업이 필요합니다. 각각에 해당되는 API가 add(), remove(), replace() 입니다. 첫번째 메뉴를 클릭했을 때처럼 replace() 함수를 호출해보세요.

혹은 윗쪽을 덮고있는 (첫번째 메뉴의)프래그먼트를 remove() 하는 것도 방법입니다. 구현 중인 UI에 적합한 방법을 사용하시기 바랍니다.

관련된 내용으로 아래 링크에서 프래그먼트 트랜잭션 수행이라는 부분을 참조하세요.


로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close