안드로이드 앱 스쿨 2기/Android
[10주차 - 수] ActionBarNavigation
봉구형
2023. 7. 2. 02:30
ActionBar Navigation
- ActionBar에 <- 아이콘을 배치하여 뒤로가기 기능을 구현할 수 있다.
- 아이콘을 표시한다고 해서 뒤로 가기 기능이 생기는 것은 아니기 때문에 직접 구현을 해야한다
1. activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" >
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="MainActivity"
android:textAppearance="@style/TextAppearance.AppCompat.Large" />
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="SecondActivity 실행" />
</LinearLayout>
2. MainActivity
class MainActivity : AppCompatActivity() {
lateinit var activityMainBinding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
activityMainBinding = ActivityMainBinding.inflate(layoutInflater)
setContentView(activityMainBinding.root)
activityMainBinding.run{
button.setOnClickListener {
val newIntent = Intent(this@MainActivity, SecondActivity::class.java)
startActivity(newIntent)
}
}
}
}
3. activity_second.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".SecondActivity">
<TextView
android:id="@+id/textView2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="SecondActivity"
android:textAppearance="@style/TextAppearance.AppCompat.Large" />
</LinearLayout>
4. SecondActivity
class SecondActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_second)
// Homebutton = 뒤로가기 버튼
// Homebutton을 활성화 한다. (활성화만 한다고 눈에 보이지가 않는다)
supportActionBar?.setHomeButtonEnabled(true)
// HomeButton을 노출시킨다.
supportActionBar?.setDisplayHomeAsUpEnabled(true)
// 아이콘을 변경한다. (아이콘을 변경 가능하나 사용자가 별로기 때문에 쓰지는 말자)
// supportActionBar?.setHomeAsUpIndicator(R.mipmap.ic_launcher)
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when(item.itemId){
// 백버튼 는 android.R.id.home 지정되어 있다
android.R.id.home -> {
// 현재 Activity를 종료한다.
finish()
}
}
return super.onOptionsItemSelected(item)
}
}
// Homebutton = 뒤로가기 버튼
// Homebutton을 활성화 한다. (활성화만 한다고 눈에 보이지가 않는다)
supportActionBar?.setHomeButtonEnabled(true)
// HomeButton을 노출시킨다.
supportActionBar?.setDisplayHomeAsUpEnabled(true)
[챗 GPT 설명]
- supportActionBar?.setHomeButtonEnabled(true): supportActionBar를 사용하여 ActionBar의 HomeButton을 활성화합니다. setHomeButtonEnabled(true) 메서드는 ActionBar의 HomeButton을 사용할 수 있도록 설정합니다. supportActionBar가 null이 아닌 경우에만 실행됩니다.
- supportActionBar?.setDisplayHomeAsUpEnabled(true): supportActionBar를 사용하여 홈 버튼을 표시합니다. setDisplayHomeAsUpEnabled(true) 메서드는 홈 버튼을 보이도록 설정합니다. 이를 통해 ActionBar의 왼쪽에 홈 버튼이 표시되며, 사용자가 뒤로 가기 등의 동작을 수행할 수 있습니다. supportActionBar가 null이 아닌 경우에만 실행됩니다.
이렇게 코드를 사용하면 ActionBar에서 HomeButton을 활성화하고, 홈 버튼을 표시할 수 있습니다. ActionBar의 HomeButton은 액티비티의 네비게이션 기능과 관련이 있으며, 사용자가 홈 버튼을 누를 때 특정 동작을 수행할 수 있도록 합니다.
[결과]
출처 : 안드로이드 앱스쿨 2기 윤재성 강사님