한 걸음 두 걸음
android ActionBar에 Icon 붙이기 본문
반응형
1. MainActivity와 같은 extends AppCompatActivity를 가진 곳에 붙이기
menu폴더 만들어 내부에 menu.xml 파일을 만들어줍니다.
menu.xml폴더 내용은 다음과 같을 수 있습니다. 원하는대로 편집해서 사용하세요
image등.
?xml version="1.0" encoding="utf-8"?>
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:title="새로고침"
android:id="@+id/menu_refresh"
android:icon="@drawable/ic_launcher_background"
app:showAsAction="always" />
<item android:title="검색"
android:id="@+id/menu_search"
android:icon="@drawable/ic_launcher_foreground"
app:showAsAction="always" />
<item android:title="새로고침"
android:id="@+id/menu_settings"
android:icon="@drawable/ic_launcher_background"
app:showAsAction="always" />
</menu>
이렇게 만들어주었다면, MainActivity로 가서
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main,menu);//파라미터로 받은 메뉴에다가 붙여달라.
return true;
}
//옵션메뉴가 선택됐을 때 자동으로 호출되는 콜백함수 (메뉴함수 선택 시 )
@Override
public boolean onOptionsItemSelected(MenuItem item) {
//선택된 아이템
int curId = item.getItemId();
switch (curId){
case R.id.menu_refresh:
Toast.makeText(this,"새로고침 메뉴 클릭됨",Toast.LENGTH_SHORT).show();
case R.id.menu_search:
Toast.makeText(this,"검색 메뉴 클릭됨",Toast.LENGTH_SHORT).show();
case R.id.menu_settings:
Toast.makeText(this,"옵션 메뉴 클릭됨",Toast.LENGTH_SHORT).show();
}
return super.onOptionsItemSelected(item);
}
}
위와 같이 적어줍니다. 여기서 switch문 안에 원하는 동작을 넣어서 쓰시면 됩니다.
2. Fragment의 ActionBar에 붙이기
프래그먼트의 경우에는 위에서 쓴 menu.xml파일을 그대로 사용합니다. 그리고 프래그먼트를 상속받은 클래스 내부에서는 위에서 썼던 함수인
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main,menu);//파라미터로 받은 메뉴에다가 붙여달라.
return true;
}
가 작동하지 않습니다.
extends Fragment로 Fragment를 상속받은 클래스 내부에서는
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
mView = inflater.inflate(R.layout.activity_notice_board, null);
init(mView);
setHasOptionsMenu(true);
return mView;
}
처럼 따로 만들어준 onCreateView내부에 setHasOptionMenu(true);설정을 해주고,
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.menu_main,menu);//파라미터로 받은 메뉴에다가 붙여달라.
}
//옵션메뉴가 선택됐을 때 자동으로 호출되는 콜백함수 (메뉴함수 선택 시 )
@Override
public boolean onOptionsItemSelected(MenuItem item) {
//선택된 아이템
int curId = item.getItemId();
switch (curId){
case R.id.menu_enroll:
//Intent intent = new Intent(getApplicationContext(),NoticeEnrollActivity.class);
Toast.makeText(getContext(),"글을 작성합니다.",Toast.LENGTH_SHORT).show();
//startActivity(intent);
break;
}
return super.onOptionsItemSelected(item);
}
위와같이 onCreateOptionsMenu를 변경하여 적용시킵니다. 여기서 저는 OptionItem을 하나만 썼기에 switch문이 살짝 바뀌어있는 것을 확인하실 수 있습니다.
반응형
'FrontEnd > Android' 카테고리의 다른 글
매개변수 / argument / Bundle / Parcel / Parcelable / Handler / Serializable 조사예정 ~ (0) | 2019.04.09 |
---|---|
android 프래그먼트 화면에서 다른 activity로 연결하는 intent 사용하기 (2) | 2019.04.08 |
android webview 웹뷰 사용하기 google / local web / (0) | 2019.04.08 |
Android Timer Stopwatch 만들기~ 소스코드 예제 (1) | 2019.04.02 |
ListView / GridView / RecyclerView 란? (0) | 2019.03.29 |