👨🏼💻개발/안드로이드 스튜디오
안드로이드 스튜디오 - 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