menu.xml은 다음과 같다(자바로 할때랑 마찬가지)



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?xml version="1.0" encoding="utf-8"?>
<menu
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto" >
 
    <!-- 액션 버튼으로써 나타나는 "검색" 아이템  -->
    <item
        android:id="@+id/action_search"
        android:title="@string/action_favorite"
        android:icon="@android:drawable/ic_menu_search"
        app:showAsAction="ifRoom" />
 
    <!-- 액션 버튼으로써 나타나는 "공유" 액션 아이템 -->
    <item
        android:id="@+id/action_share"
        android:title="@string/action_cart"
        android:icon="@android:drawable/ic_menu_share"
        app:showAsAction="ifRoom" />
 
</menu>
menu.xml
cs




코틀린으로 구현할 때는 방식이 좀 다르다.


아래와 같이 하면 간단하게 구현한다.


구글링하면 다른 방법으로 한 것들도 많이 발견된다. 뭐가 베스트인지는 모르겠다




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class MainActivity : AppCompatActivity() {
 
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }
 
    //액션버튼 메뉴 액션바에 집어 넣기
    override fun onCreateOptionsMenu(menu: Menu?): Boolean {
        menuInflater.inflate(R.menu.menu, menu)
        return true
    }
 
    //액션버튼 클릭 했을 때
    override fun onOptionsItemSelected(item: MenuItem?): Boolean {
        when(item?.itemId){
            R.id.action_search -> {
                //검색 버튼 눌렀을 때
                return super.onOptionsItemSelected(item)
            }
            R.id.action_share -> {
                //공유 버튼 눌렀을 때
                return super.onOptionsItemSelected(item)
            }
            else -> return super.onOptionsItemSelected(item)
        }
    }
}
MainActivity.kt
cs




참고) 혹시 커스텀 툴바(custom toolbar)를 만들었는데 메뉴 아이템이 안들어간다면


actionbar를 설정을 안했을수도 있다. 그러면, MainActivity.kt에 다음과 같이 코드를 짜주면 된다.


액션바 코드는 타이틀을 없애주는 코드다.



 

1
2
3
4
5
//참고: 커스텀 툴바 적용하기
val toolBar = find<toolbar>(R.id.toolbar)
setSupportActionBar(toolBar)

//참고: 타이틀 없애기
val actionBar = supportActionBar
if(actionBar != null) actionBar.setDisplayShowTitleEnabled(false)
cs


기존에 findViewById는 너무 불편했다.


그래서 코틀린에서는 Kotlin Android Extension을 지원한다.


밑의 extension 부문만 추가해주면 된다.






아래는 자동으로 코드에 추가 된다.







이제 아래처럼 사용하면 된다.






'Study > Kotlin' 카테고리의 다른 글

[Kotlin 코틀린] 액션바에 버튼 추가하기  (0) 2017.12.21
[Kotlin 코틀린] Anko란??  (0) 2017.12.21

https://github.com/Kotlin/anko





Anko is a Kotlin library which makes Android application development faster and easier. It makes your code clean and easy to read, and lets you forget about rough edges of the Android SDK for Java.


라고 한다.


신기했던 거는 

toast("Hi there")

longToast("Hi there")

로 간단하게 쓸 수 있다는거!!


훨씬 더 많은 기능이 있다는 데 아직 이것밖에 안써봤다....

+ Recent posts