프래그먼트 (Fragment) - 3. 통신 MainActivity는 ToolbarFragment와 TextFragment 2개로 이루어져있다. ToolbarFragment안의 EditText 안에 텍스트를 입력, Seekbar로 텍스트의 크기를 조절하고 Change Text 버튼을 클릭하면 TextFragment의 TextView가 변한다. Fragment의 통신 Activity가 Fragment를 찾을 땐 findViewById 메소드로 Fragment의 id를 참조하면 되지만, 그 반대의 경우 Fragment끼리 통신할 수 없고 Fragment가 포함된 Activity(hosting)를 거쳐야 한다. 통신 방법 1. Fragment에서 Interface 선언 (안에 추상메소드 구현) 2. Activity(hosting)에서 상속. 구현은 이따.. 2021. 11. 25. 프래그먼트 (Fragment) - 2. 동적 교체 Fragment 동적 교체 0. Fragment를 삽입할 컨테이너 선언(FrameLayout) 1. FragmentManager 객체 (supportFragmentManager)를 생성한 다음, 이 객체의 beginTransaction 메소드를 호출 2. Activity 레이아웃에 Fragment 추가. 변경된 결과를 반영하려면 commit() 메소드 호출 * savedInstanceState != null -> 무언가 가지고 있으면 건드리지 마 (이번 작업에선 필요 없음) * addToBackStack -> Back 버튼을 누른 상황을 고려한 것. -> Back 버튼을 누르면 이전 fragment를 복원할 것인가? (null이면 back stack에 저장하지 않고 폐기) * beginTransactio.. 2021. 11. 25. 프래그먼트 (Fragment) - 1 LinearLayout과 겉보기에 차이는 없지만 Fragment는 독립적인 Activity로 이벤트 처리가 가능하다. * 다른 Activity에 재사용 가능 * 독립적이지만 Activity에 종속 (Activity가 죽으면 같이 죽음) * 자신만의 Lifecycle, Layout을 가지고 있음 * Activity 실행 중 삽입, 제거 가능 onCreateView()는 화면을 구성할 때 호출되며 대부분의 코드를 여기에 작성함 Fragment 만들기 -> 일반적인 Activity는 setContentView 에서 Layout을 객체화 시켰다면, Fragment는 LayoutInflater(Inflate Method)를 사용해서 화면에 보여준다. Inflater 객체는 CallbackMethod onCreat.. 2021. 11. 24. 스피너 (Spinner) 스피너 만들기 Spinner는 Adapter를 통해 데이터를 공급받고 보여준다. planets -> Spinner에 넣을 string-array item들을 모아놓음 (데이터) adapter -> Arrayadapter를 사용 -> this : context는 Activity 객체를 지칭. 어떤 화면에 보여줄건가? MainActivity -> android.R.layout.simple_spinner_item : 어떻게 보여줄건가? spinner의 layout은 초기화면(아이템 한 개만 보이는)과 클릭했을때 여러 아이템들을 펼쳐서 보여주는 화면 두 개로 구성되는데 이 중 한 개 아이템만 보이는 레이아웃 setDropdownResource -> Spinner의 두 개 레이아웃 중 여러 아이템들을 펼쳐서 보여.. 2021. 11. 23. 이전 1 다음