xml 파일을 이용한 메뉴버튼 구현 (OptionsMenu)

프로그래밍/Android (Java)|2015. 1. 27. 10:55
반응형

MainActivity.java 파일 하나만으로도 메뉴 구현이 가능하지만

여기서는 xml 파일을 이용한 Options Menu를 구현해보도록 하겠습니다.


* 장점 : 구현이 쉬움

* 단점 : 메뉴 > 서브메뉴(다중 체크)를 구현해도 한 개의 Item 클릭시 창이 닫힘



res/menu/activity_main.xml 파일 생성


<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item

        android:id="@+id/setting"

        android:title="SETTING">

        <menu>

            <group android:id="@+id/menu_group" android:enabled="true" android:checkableBehavior="all">

                <item android:id="@+id/popup" android:title="POPUP" />

                <item android:id="@+id/notice" android:title="NOTICE" />

            </group>

        </menu>

    </item>

    <item

        android:id="@+id/clear"

        android:title="CLEAR" />

    <item

        android:id="@+id/exit"

        android:title="EXIT" />

</menu> 


* 아래 옵션을 사용하면 메뉴에 이미지 삽입도 가능합니다.

    android:icon="@drawable/icon_clear"



MainActivity.java 수정


import android.app.Activity;

import android.os.Bundle;

import android.view.Menu;

import android.view.MenuInflater;

import android.view.MenuItem;

import android.widget.Toast; 



public class MainActivity extends Activity {

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

}


  // Menu

@Override

public boolean onCreateOptionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.activity_main, menu);

return true;

}


@Override

public boolean onOptionsItemSelected(MenuItem item) {

switch(item.getItemId()) {

case R.id.popup:

if (item.isChecked()) item.setChecked(false);

else item.setChecked(true);

return true;

case R.id.notice:

if (item.isChecked()) item.setChecked(false);

else item.setChecked(true);

return true;

case R.id.clear:

DBManager GCMclear = new DBManager(this, "sysdocu.db", null, 1);

SQLiteDatabase db = GCMclear.getWritableDatabase();

db.execSQL("delete from message;");

db.close();

finish();

startActivity(new Intent(this, MainActivity.class));

return true; 

case R.id.quit:

finish();

return true;

default:

return super.onOptionsItemSelected(item);

}

}

}


반응형

댓글()