๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
studies/Mobile Application

Android activity ์ƒ๋‹จ๋ฐ”(appbar, toolbar)์— ๋ฒ„ํŠผ ๋งŒ๋“ค๊ธฐ

by Vada Kim 2020. 11. 14.
728x90
๋ฐ˜์‘ํ˜•

์•ˆ๋“œ๋กœ์ด๋“œ ์•กํ‹ฐ๋น„ํ‹ฐ ํ™”๋ฉด ์•ฑ๋ฐ”(์ •ํ™•ํžˆ๋Š” ํˆด๋ฐ”)์— ๋ฒ„ํŠผ์„ ๋งŒ๋“ค์–ด์ฃผ๋ ค๊ณ  ํ•œ๋‹ค. ๋ฒ„ํŠผ ํ•˜๋‚˜์ด๊ธฐ ๋•Œ๋ฌธ์— ํ•œ๊ฐ€์ง€์˜ ๊ธฐ๋Šฅ๋งŒ ํ•œ๋‹ค.

 

 

 

1. Menu Resource File ์ƒ์„ฑ


app์˜ res/menu ํด๋”์—์„œ ๋ฉ”๋ชจ ๋ฆฌ์†Œ์Šค xml ์ƒ์„ฑ

 

๊ทธ๋Ÿผ ์š”๋ ‡๊ฒŒ ๋œจ๋Š”๋ฐ, ์™ผ์ชฝ์˜ ๋ฉ”๋‰ด Menu Item์„ ์ปดํผ๋„ŒํŠธ ํŠธ๋ฆฌ/menu ์•ˆ์— ๋„ฃ์–ด ์ƒˆ๋กœ ์ƒ์„ฑํ•œ๋‹ค.

 

๊ทธ๋Ÿผ ์ด๋ ‡๊ฒŒ ๋“œ๋กญ๋ฉ”๋‰ด๊ฐ€ ๊ธฐ๋ณธ์œผ๋กœ ์ƒ์„ฑ๋˜๋Š”๋ฐ, ๋‚˜๋Š” ๋ฒ„ํŠผ๋งŒ ์›ํ•˜๋‹ˆ ๋“œ๋กญ๋ฉ”๋‰ด๋ฅผ ์—†์• ์ฃผ๊ฒ ๋‹ค.

๊ทธ๋Ÿฌ๊ธฐ ์œ„ํ•ด xml ์ฝ”๋“œ๋ฅผ ์—ฐ๋‹ค.

 

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:title="Item" />
</menu>

 

์•„๋ž˜์™€ ๊ฐ™์ด ๋ฐ”๊ฟ”์ฃผ์—ˆ๋‹ค.

<menu 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"
    tools:context="์ด ๋ฉ”๋‰ด๋ฅผ ์‚ฌ์šฉํ•  ์•กํ‹ฐ๋น„ํ‹ฐ๊ฒฝ๋กœ">

    <item
        android:id="@+id/action_save"
        android:orderInCategory="100"
        android:title="SAVE"
        app:showAsAction="always" />
</menu>

 

์•กํ‹ฐ๋น„ํ‹ฐ ๊ฒฝ๋กœ ์˜ˆ์‹œ (app/java ํ•˜์œ„ ํด๋” ์ด๋ฆ„)

tools:context = "com.example.myproject.MainActivity"

 

title ๋Œ€์‹  icon์„ ์ง€์ •ํ•ด์ฃผ์–ด๋„ ๋œ๋‹ค. title๊ณผ icon ๋‘˜๋‹ค ์ง€์ •ํ–ˆ๋‹ค๋ฉด icon๋งŒ ๋ณด์ธ๋‹ค.

<item
        android:id="@+id/action_save"
        android:icon="@android:drawable/ic_menu_save"
        android:title="SAVE"
        android:orderInCategory="100"
        app:showAsAction="always" />

 

 

 

 

 

2. Activity์— ๋ฉ”๋‰ด ๋ฆฌ์†Œ์Šค ์ง€์ •


 

	@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.๋ฉ”๋‰ด๋ฆฌ์†Œ์ŠคํŒŒ์ผ๋ช…, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(@NonNull MenuItem item) {
        switch (item.getItemId()) {
            case R.id.๋ฉ”๋‰ด๋ฆฌ์†Œ์Šค์˜ ๋ฒ„ํŠผID๊ฐ’:
                //๋™์ž‘๋‚ด์šฉ
                return true;
        }
        return super.onOptionsItemSelected(item);
    }

๋ฉ”๋‰ด๋ฅผ ์‚ฌ์šฉํ•  ์•กํ‹ฐ๋น„ํ‹ฐ ํด๋ž˜์Šค์— onCreateOptionsMenu,  onOptionsItemSelected ํ•จ์ˆ˜๋ฅผ ์˜ค๋ฒ„๋ผ์ดํŠธํ•ด์ค€๋‹ค.

์ง์ ‘ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด๋„๋˜์ง€๋งŒ, ๋งˆ์šฐ์Šค ์šฐํด๋ฆญ>Generate...>Override Methods... ๋กœ๋„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

 

 

 

์•„๋ž˜๋Š” ์•ž์„œ ๋‚ด๊ฐ€ ์ง€์ •ํ•œ ๋ฒ„ํŠผ ID๋กœ ์ž‘์„ฑํ–ˆ๊ณ , ๋’ค๋กœ๊ฐ€๊ธฐ ๋ฒ„ํŠผ๋„ ๋„ฃ์€ ๋ชจ์Šต์ด๋‹ค.

switch (item.getItemId()) {
  case android.R.id.home:
    finish();
    return true;
  case R.id.action_save:
    //๋™์ž‘
    return true;
}

 

 

 

๋Œ๋ ค๋ณด๋‹ˆ ์ž˜ ๋‚˜ํƒ€๋‚œ๋‹ค. 

728x90
๋ฐ˜์‘ํ˜•