안드로이드 스튜디오 버전 : 3.5
시뮬레이터 : Nexus 6 API 27
최종화면(하단바 버튼을 눌렀을 때, 화면 전환)
코드작성전에 추가해야하는 부분
하단 목록을 정하기 위해서 res 아래 menu 디렉토리를 만들고 파일을 추가해준다.
메뉴에 필요한 아이콘 추가
xml파일을 메뉴에 추가한 만큼 생성(3개)
frag_home.xml (나머지 파일도 text빼고 내용 동일)
activity_main.xml
java 클래스 메뉴 개수만큼 만들어준다.
frag_home.xml (3개모두 같은 내용)
MainActivity.java
package ~~;
import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentTransaction;
import android.os.Bundle; import android.view.MenuItem; import android.view.View;
import com.google.android.material.bottomnavigation.BottomNavigationItemView; import com.google.android.material.bottomnavigation.BottomNavigationView;
public class MainActivity extends AppCompatActivity {
private BottomNavigationView bottomNavigationView; private FragmentManager fm; private FragmentTransaction ft; private FragHome fragHome; private FragMap fragMap; private FragSettings fragSettings;
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
bottomNavigationView = findViewById(R.id.bottomNavigationView); bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) { switch (menuItem.getItemId()){ case R.id.home: setFrag(0); break; case R.id.map: setFrag(1); break; case R.id.settings: setFrag(2); break; } return true; } }); fragHome = new FragHome(); fragMap = new FragMap(); fragSettings = new FragSettings(); setFrag(0); //첫 프래그먼트 화면을 무엇으로 지정해줄 것인지 선택
}
//프레그먼트 교체가 일어나는 실행문이다. private void setFrag(int n) { fm = getSupportFragmentManager(); ft = fm.beginTransaction(); //실제적인 프레그먼트 교체에서 사용 switch (n) { case 0: ft.replace(R.id.main_frame,fragHome); ft.commit(); //저장의미 break; case 1: ft.replace(R.id.main_frame, fragMap); ft.commit(); //저장의미 break; case 2: ft.replace(R.id.main_frame,fragSettings); ft.commit(); //저장의미 break; } } }
|
여기까지 작성하면 하단바를 통한 화면전환이 이루어진다.
참고 :
https://www.youtube.com/watch?v=stwCk_f3sCw&t=705s