<?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">
<!-- app:showAsAction = "always" 일 경우 상단 액션바 메뉴에 나타난다. -->
<item
android:title="action1"
android:icon ="@drawable/aa"
android:id="@+id/action_menu1"
android:orderInCategory="1"
app:showAsAction="always" />
<item
android:title="action2"
android:icon="@drawable/bb"
android:id="@+id/action_menu2"
android:orderInCategory="2"
app:showAsAction="always" />
<item
android:title="action3"
android:icon="@drawable/cc"
android:id="@+id/action_menu3"
android:orderInCategory="3"
app:showAsAction="always" />
<item
android:title="menu01"
android:id="@+id/menu01" />
<item
android:title="menu02"
android:id="@+id/menu02"/>
<item android:title="menu03"
android:id="@+id/menu03" />
</menu>
먼저 res를 우클릭 한다음 new - Directory 를 클릭하고 menu를 입력하고 확인 누릅니다.
그러면 위처럼 menu 디렉터리가 생성됩니다.
그다음 위에 코드처럼 <item>안에 정보를 입력합니다.
app:showAsAction="always"
이 부분을 입력하면 입력된 item은 밑에 나오는 사진에서 볼 수 있듯이 액션바에 메뉴가 나타납니다.
잘 따라하셨다면 Design화면에 저렇게 나올 겁니다.
이제 java코드로 들어가면
package firebase.androidhive.info.example;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;
import org.w3c.dom.Text;
public class MainActivity extends AppCompatActivity {
TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView) findViewById(R.id.textView);
}
//옵션 메뉴를 만든다. 액션바 + 메뉴
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return super.onCreateOptionsMenu(menu);
}
//메뉴를 눌렀을 때 이벤트 처리
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()){
case R.id.action_menu1:
Toast.makeText(getApplicationContext(), "1", Toast.LENGTH_SHORT).show();
break;
case R.id.action_menu2:
Toast.makeText(getApplicationContext(), "2", Toast.LENGTH_SHORT).show();
break;
case R.id.action_menu3:
Toast.makeText(getApplicationContext(), "3", Toast.LENGTH_SHORT).show();
break;
case R.id.menu01:
Toast.makeText(getApplicationContext(), "1", Toast.LENGTH_SHORT).show();
break;
case R.id.menu02:
Toast.makeText(getApplicationContext(), "2", Toast.LENGTH_SHORT).show();
break;
case R.id.menu03:
Toast.makeText(getApplicationContext(), "3", Toast.LENGTH_SHORT).show();
break;
}
//onOptionsItemSelected 리스너가 받아들인 메뉴의 타이틀을 보여준다.
textView.setText(item.getTitle().toString());
return super.onOptionsItemSelected(item);
}
}
위에서 굵게 표시한 onCreateOptionsMenu, onOptionsItemSelected 메서드를 만들어야 합니다. (ctrl+o누르시고 찾으시면 편합니다.)
onCreateOptionsMenu(){
getMenuInflater().inflate(R.menu.main, menu);
//이부분은 우리가만든 menu.xml파일을 inflater 하는 부분입니다.
}
//이 메서드는 우리가 메뉴를 선택하였을 때 자동으로 호출되며,
item에 우리가 누른 버튼의 정보가 담겨있습니다.
따라서 item.getItemId()로 반환되는 id값으로 어떤 메뉴를 눌렀는지 확인하고
이벤트를 입력합니다.
onOptionsItemSelected(MenuItem item){
}
'안드로이드+자바' 카테고리의 다른 글
안드로이드 이미지 버튼 만드는 법 (0) | 2017.01.05 |
---|---|
자바 객체화) 객체화란 무엇인가? (0) | 2017.01.03 |
안드로이드 화면 전환시키는법! (0) | 2016.12.30 |
addView(View, LayoutParams) is not supported in AdatperView 예외가 발생할 때 해결법! (0) | 2016.12.27 |
애드몹 배너광고 다는법 누구나 따라하기! (0) | 2016.12.20 |
댓글