Information Security ˗ˋˏ ♡ ˎˊ˗

Android/Android APP

Android Studio, 하단바

토오쓰 2019. 9. 25. 20:28

안드로이드 스튜디오 버전 : 3.5

시뮬레이터 : Nexus 6 API 27

 

최종화면(하단바 버튼을 눌렀을 때, 화면 전환)

 

코드작성전에 추가해야하는 부분

빨간색 부분을 추가

 

하단 목록을 정하기 위해서 res 아래 menu 디렉토리를 만들고 파일을 추가해준다.

3개의 메뉴 추가

 

메뉴에 필요한 아이콘 추가

 

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