왕현성
코딩발자취
왕현성
전체 방문자
오늘
어제
  • 코딩 (277)
    • Python (71)
    • Java (16)
    • MySQL (34)
    • 인공지능 (48)
      • 머신러닝 (16)
      • 딥러닝 (32)
    • 영상처리 (4)
    • Rest API (21)
    • Android Studio (25)
    • streamlit (13)
    • DevOps (22)
      • AWS (9)
      • PuTTY (5)
      • Git (4)
      • Serverless (2)
      • Docker (2)
    • IT 기술 용어 (6)
    • 디버깅 ( 오류 해결 과정 ) (17)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • PYTHON
  • pytorch
  • 의료이미징
  • ckpt_file
  • 영상기술
  • 영상처리
  • tune()
  • 컴퓨터비전
  • maskimage
  • labelme
  • numpy
  • pip install labelme
  • encoding='utf-8'
  • OpenCV
  • 영상처리역사
  • alibidetect
  • UnboundLocalError
  • ComputerVision
  • 딥러닝
  • unsupervised
  • alibi-detection
  • labelme UnocodeDecodeError
  • PIL
  • 비지도학습
  • TensorFlow
  • imageprocessing
  • yolov8
  • matplotlib
  • 기상탐사
  • get_long_description

최근 댓글

최근 글

티스토리

250x250
hELLO · Designed By 정상우.
왕현성

코딩발자취

Android - Fragment  탭바를 이용하여 각각의 다른 화면으로 전환하기
Android Studio

Android - Fragment 탭바를 이용하여 각각의 다른 화면으로 전환하기

2023. 2. 15. 14:55
728x90

 

2. activity_main.xml

  • 기본 레이아웃 형식 변경 - RelativeLayout

  • BottomNavigationView 위젯 추가
    • id - bottomNavigationView
    • Attributes - layout_alignParentBottom (True)

 


  • NavHostFragment 위젯 추가
    • id : fragment


  • 추가한 NavHostFragment(id:fragment)의 속성 설정
    • layout_above - bottomNavigationView


3. Fragment

  • Package - New - Fragment - Fragment (Blank) (프래그먼트 추가)
    • 테스트를 위한 프래그먼트 3개 추가
      • FirstFragment, SecondFragment, ThirdFragment


4. Navigation

  • Resource Manager - Navigation - '+'버튼 - Navigation Resource File(파일 추가)


  • Navigation Resource File 파일 생성 (파일명 my_nav)


5. my_nav.xml (Navigation)

  • 화면 + 모양 클릭 - 출력될 프래그먼트 선택 (fragment_first.xml)
    • Navigation (Tab Menu)에서 보여질 프래그먼트들 설정


  • 속성으로도 지정 가능
    • 속성 - startDestination (실행시 처음에 보여질 기본 프래그먼트 설정)


  • Resource Manager - Menu - '+' 버튼 - my_nav (Navigation)


  • 생성 할 파일명 : bottom_menu - OK

6. bottom_menu.xml


  • Menu Item 3개 추가


  • Menu Item (차례대로)
    • id : firstFragment , secondFragment, thirdFragment
    • title : 홈, 내 포스팅, 설정
    • icon : vector asset 에서 적절한 이미지를 찾아 입력



7. activity_main.xml

  • BottomNavigationView의 속성 설정
    • menu - 위에서 생성한 bottom_menu 지정



9. 탭을 누르면 각각의 다른 화면을 출력하는 기능 구현하기 (각각의 프래그먼트 호출)


9.1. Android Studio - Java 사용

  • MainActivity.java
 
 
 
<java />
 
public class MainActivity extends AppCompatActivity {

    BottomNavigationView navigationView;
    Fragment firstFragment, secondFragment, thirdFragment;

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

        // 액션바 숨기는 코드
//        getSupportActionBar().hide();

        // 네이게이션뷰에 사용 될 객체 생성
        navigationView = findViewById(R.id.bottomNavigationView);
        firstFragment = new FirstFragment();
        secondFragment = new SecondFragment();
        thirdFragment = new ThirdFragment();

        navigationView.setOnItemSelectedListener(new NavigationBarView.OnItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                int itemId = item.getItemId();

                Fragment fragment = null;

                // 메뉴 선택시 지정된 프래그먼트로 이동 (loadFragment 메소드 사용)
                if(itemId == R.id.firstFragment){
                    fragment = firstFragment;
                    getSupportActionBar().setTitle("홈");
                    getSupportActionBar().show();
                } else if(itemId == R.id.secondFragment){
                    fragment = secondFragment;
                    getSupportActionBar().setTitle("친구");
                } else if(itemId == R.id.thirdFragment){
                    fragment = thirdFragment;
                    getSupportActionBar().setTitle("셋팅");
                }
                return loadFragment(fragment);
            }
        });
    }

    private boolean loadFragment(Fragment fragment) {
        if(fragment != null){
            getSupportFragmentManager()
                    .beginTransaction()
                    .replace(R.id.fragment, fragment)
                    .commit();
            return true;
        }
        return false;
    }
}

 

 

 


10. Fragment 화면 코딩

Activity는 onCreate에서 코드를 작성하지만, Fragment는 onCreateView에서 코드를 작성

 
 
 
<java />
 
public class FirstFragment extends Fragment {

    // TODO: Rename parameter arguments, choose names that match
    // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
    private static final String ARG_PARAM1 = "param1";
    private static final String ARG_PARAM2 = "param2";

    public FirstFragment() {
        // Required empty public constructor
    }

    // TODO: Rename and change types and number of parameters
    public static FirstFragment newInstance(String param1, String param2) {
        FirstFragment fragment = new FirstFragment();
        Bundle args = new Bundle();
        args.putString(ARG_PARAM1, param1);
        args.putString(ARG_PARAM2, param2);
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    // Fragment는 onCreate가 아닌 onCreateView에서 연결
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.fragment_first, container, false);

		// 여기에 코드를 작성

        return rootView;
    }
}

'Android Studio' 카테고리의 다른 글

Android - 카카오 로그인 API를 이용해 간편 로그인 기능 구현하기  (0) 2023.04.03
Android - RecyclerView, Fragment의 클릭 이벤트 처리하기  (0) 2023.02.15
Android - Retrofit Multipart 사용 방법, 파일 업로드하기  (0) 2023.02.14
Android - 카메라와 사진첩을 이용하여 이미지 뷰에 사진 출력하기  (0) 2023.02.13
Android - 네트워크 통신 Retrofit2 Library  (0) 2023.02.09
    'Android Studio' 카테고리의 다른 글
    • Android - 카카오 로그인 API를 이용해 간편 로그인 기능 구현하기
    • Android - RecyclerView, Fragment의 클릭 이벤트 처리하기
    • Android - Retrofit Multipart 사용 방법, 파일 업로드하기
    • Android - 카메라와 사진첩을 이용하여 이미지 뷰에 사진 출력하기
    왕현성
    왕현성
    AI 머신비전 학습일지

    티스토리툴바