👨🏼‍💻개발/안드로이드 스튜디오

안드로이드 스튜디오 - fragment 조작하기

Janger 2021. 11. 23. 23:40
728x90

 

액티비티의 기본 레이아웃을 LinearLayout으로 변경

 

 

 

 

기본 horizontal를 vertical으로 변경

 

 

 

LinearLayout 자식을 두 개 넣어주기

 

각각 fragment 뷰어, fragment 전환 역할을 할 거임

 

첫 번째 자식 LinearLayout의 id를 Container로 수정

 

 

 

 

두 번째의 자식 LinearLayout에 button들을 넣어줌

 

그런데 미리보기에 button들이 보이지 않는 것을 볼 수 있는데, 이는 Container가 부모의 크기만큼 설정이 되어있어서

버튼의 레이아웃이 밀려난 것임

 

 

Container의 layout_weight 속성 값으로 1을 준다. 

 

 

버튼 레이아웃의 layout_height를 wrap_content로 변경해준다.

 

그럼 버튼들이 제대로 나오는 것을 볼 수 있다. 

 

 

 

프로젝트 우클릭 - New - Fragment - Fragment (Blank)

 

 

 

Fragment의 이름은 알아서

 

 

 

이제 여기서부터 중요

Fragment의 자바 파일을 보면 너무 코드가 많아서 어지러운데 저 많은 것 중

 

 

onCreate와 onCreateView 클래스만 남기고 전부 지워줌

 

 

fragment의 뷰 조작을 위해서는 return inflater... 이 부분을 수정해준다.

 

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_one, container, false);
        
        
    }

(Before)

 

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view = inflater.inflate(R.layout.fragment_one, container, false);

        return view;
        
    }

(After)

 

 

 

 

액티비티 자바 파일을 아래처럼 추가해준다.

    OneFragment oneFragment;
    SecondFragment secondFragment;
    FragmentManager fragmentManager;
    FragmentTransaction fragmentTransaction;

    Button btn1;
    Button btn2;

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

        btn1 = (Button) findViewById(R.id.button1);
        btn2 = (Button) findViewById(R.id.button2);


        fragmentManager = getSupportFragmentManager();
        oneFragment = new OneFragment();
        secondFragment = new SecondFragment();

        btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                fragmentTransaction = fragmentManager.beginTransaction();
                fragmentTransaction.addToBackStack(null);
                fragmentTransaction.replace(R.id.Container, oneFragment);
                fragmentTransaction.commit();
            }
        });

        btn2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                fragmentTransaction = fragmentManager.beginTransaction();
                fragmentTransaction.addToBackStack(null);
                fragmentTransaction.replace(R.id.Container, secondFragment);
                fragmentTransaction.commit();
            }
        });


    }

 

 

 

완성!

 

728x90