참고 URL : http://itpangpang.tistory.com/114

 

 

 

 

public class MainActivity extends AppCompatActivity {

        Button btn_move_page1;
        Button btn_move_page2;
        Button btn_move_page3;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

            setup();

            movePage1();
        }
        private void setup()
        {
            btn_move_page1 = (Button) findViewById(R.id.btn_move_page1);
            btn_move_page2 = (Button) findViewById(R.id.btn_move_page2);
            btn_move_page3 = (Button) findViewById(R.id.btn_move_page3);

            btn_move_page1.setOnClickListener(myListener);
            btn_move_page2.setOnClickListener(myListener);
            btn_move_page3.setOnClickListener(myListener);
        }

        View.OnClickListener myListener = new View.OnClickListener(){
            @Override
            public void onClick(View view) {
                btn_move_page1.setSelected(false);
                btn_move_page2.setSelected(false);
                btn_move_page3.setSelected(false);

                switch (view.getId()){
                    case R.id.btn_move_page1:
                        movePage1();
                        break;
                    case R.id.btn_move_page2:
                        movePage2();
                        break;
                    case R.id.btn_move_page3:
                        movePage3();
                        break;
                }
            }
        };



        public void movePage1(){
            Page1 page1 = new Page1();
            //FragmentManager : Activity위(안)에서 Fragment와 Activity의 상호작용을 관리
            FragmentManager fragmentManager = getFragmentManager();

            //FragmentTransaction
            //  - 실질적으로 이 Transaction이  Activity위에 Fragment를 올려주고(add) 있던걸 빼고
            //    다시올리고(replace)  제거해주고(remove)  commit등 여러가지 중요한  활동이 가능하게 도와준다.
            FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
            fragmentTransaction.replace(R.id.ll_page, page1);
            fragmentTransaction.commit();
        }

        public void movePage2(){
            Page2 page2 = new Page2();
            FragmentManager fragmentManager = getFragmentManager();
            FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
            fragmentTransaction.replace(R.id.ll_page, page2);
            fragmentTransaction.commit();
        }

        public void movePage3(){
            Page3 page3 = new Page3();
            FragmentManager fragmentManager = getFragmentManager();
            FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
            fragmentTransaction.replace(R.id.ll_page, page3);
            fragmentTransaction.commit();
        }

        //버튼 하단에 있는 LinearLayout에 보여줄 페이지 처리
        // - 이때 Activity라면 AppCompatActivity 를 extends 받아야 된다.
        // - extends를 Fragment로 하면서 Activity가 아니라 Fragment임을 알 수 있다.
        //   또한 onCreate()메소드가 아닌 onCreateView()메소드를 이용했다.
        public static class Page1 extends Fragment {
            @Override
            public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
                //화면을 가져오기 위해서 LayoutInflater 객체를 이용했다.
                //  - inflate() : xml을 실제 객체로 사용가능하게 하는 역할을 담당
                View view = inflater.inflate(R.layout.fragment_page1, container, false);
                return view;
            }
        }
        public static class Page2 extends Fragment {
            @Override
            public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
                View view = inflater.inflate(R.layout.fragment_page2, container, false);
                return view;
            }
        }
        public static class Page3 extends Fragment {
            @Override
            public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
                View view = inflater.inflate(R.layout.fragment_page3, container, false);
                return view;
            }
        }

}

 

 

 

'[Android] - 개념 > Fragment' 카테고리의 다른 글

Fragment 기초 예제 3  (0) 2016.12.04
Fragment 기초 예제 2  (2) 2016.12.04
Fragment 기본 개념  (0) 2016.11.29
Posted by 농부지기
,

[ Fragment ]

 

1. 기본 개념

   1. Fragment도 Activity처럼 생명주기가 있지만 Activity위에서 동작하기 때문에 Activity가 종료되면 모든 Fragment도 종료된다.

   2. Fragment는 app.Fragment와 support.v4.app.Fragment library 가 존재

   3. 화면(Activity)를 여러 조각으로 나누워도  관리 및 조회하고 싶을때 Fragment를 사용.

   4. Fragment는 항상 Activity위에 올라가 있어야 한다.

   5. [탭]버튼을 클릭시 다른 화면을 보여줄때 Activity도 가능 하지만 Fragment를 사용하면 더 좋다.

 

   9. 하나의 액티비티 위에 여러 개의 액티비티를 올릴수 있다.

       - 구체적으로 Activity클래스와 AcitivityGroup클래스를 이요하면 구현 가능

       - 하지만 하나의 화면을 독립적으로 구성할 때 필요한 여러 가지 속성들을 사용하면, 안드로이드 시스템에서 관리하는

         애플리케이션 구성 요소이므로 액티비티 안에 다른 액티비티를 넣는 것은 단말의 리소스를 많이 사용하는 비효율적인 방법이 된다.

 

2. Fragment 주요 메소드

   - public final Activity getActivity()

         : 이 프래그먼트를 포함하는 액티비티를 리턴함.

   - public final FragmentManager getFragmentManager()

         : 이 프래그먼트를 포함하는 액티비티에서 프래그먼트 객체들과 의사소통하는 프래그먼트 매니저를 리턴함.  

   - public final Fragment getParentFragment()

         : 이 프래그먼트를 포함하는 부모가 프래그먼트일 경우 리턴함. 액티비티이면 null을 리턴함.

   - public final int getId()

         : 이 프래그먼트의 ID를 리턴함.

 

3. FragmentManager 주요 메소드

   - public abstract FramgentTransaction beginTransaction()

          : 프래그먼트를 변경하기 위한 트랜젝션을 시작함

   - public abstract Framgent  findFragmentById(int id)

          : ID를 이용해 프래그먼트 객체를 찾음

   - public abstract Framgent  findFragmentByTag(String tag)

          : 태그 정보를 이용해 프래그먼트 객체를 찾음

   - public abstract boolean executePendingTransaction()

          : 트랜젝션은 commit()메소드를 호출하면 실행되지만 비동기(asynchronous)방식으로 실행되므로 즉시 실행하고 싶다면 이 메소드를 추가로 호출해야 됨

 

URL : http://itpangpang.tistory.com/''

'[Android] - 개념 > Fragment' 카테고리의 다른 글

Fragment 기초 예제 3  (0) 2016.12.04
Fragment 기초 예제 2  (2) 2016.12.04
Fragment 기초 예제 1  (0) 2016.11.30
Posted by 농부지기
,

참고 : http://itpangpang.tistory.com/143

Posted by 농부지기
,