Activity의 객체가 만들어 질 때 자동으로 호출되는 메서드이며 여기에서 메뉴를 생성하게 된다.
메서드가 true를 반환하면 메뉴가 나타난다.
package com.androidbasic.a20optionmenu;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.TextView;
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) {
// //xml를 통해 메뉴를 구성 할 수 있는 객체를 추출
// MenuInflater inflater = getMenuInflater();
// //xml을 이용해 메뉴를 구성한다.
// inflater.inflate(R.menu.option_menu, menu);
//
menu.add(Menu.NONE,Menu.FIRST,Menu.NONE,"코드메뉴1");
//menu.add(Menu.NONE,Menu.FIRST + 1,Menu.NONE,"코드메뉴2");
Menu sub = menu.addSubMenu("코드메뉴2");
sub.add(Menu.NONE,Menu.FIRST + 10,Menu.NONE,"코드 서브메뉴1");
sub.add(Menu.NONE,Menu.FIRST + 20,Menu.NONE,"코드 서브메뉴2");
menu.add(Menu.NONE,Menu.FIRST + 2,Menu.NONE,"코드메뉴3");
return true;
}
//옵션 메뉴의 항목을 터치하면 호출되는 메서드
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
//사용자가 터치한 항목 객체의 id를 추출한다
int id = item.getItemId();
//분기
// switch (id) {
// case R.id.item1:
// textView.setText("메뉴1을 눌렀습니다");
// break;
// case R.id.item2_1:
// textView.setText("서브 메뉴1을 눌렀습니다");
// break;
// case R.id.item2_2:
// textView.setText("서브 메뉴2를 눌렀습니다.");
// break;
// case R.id.Item3:
// textView.setText("메뉴3을 눌렀습니다");
// break;
// }
switch (id){
case Menu.FIRST :
textView.setText("코드 메뉴1를 눌렀습니다.");
break;
case Menu.FIRST + 10:
textView.setText("코드 서브메뉴1을 눌렀습니다.");
break;
case Menu.FIRST + 20:
textView.setText("코드 서브메뉴2를 눌렀습니다.");
break;
case Menu.FIRST + 2:
textView.setText("코드 메뉴3을 눌렀습니다.");
break;
}
return super.onOptionsItemSelected(item);
}
}