문제점
<?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">
<item
android:id="@+id/menu_sort"
android:title="sort"
app:showAsAction="always"
app:actionLayout="@layout/sort_layout"/>
</menu>
OptionMenu를 구현할 때 item을 icon이 아닌 actionLayout 옵션을 통해 layout을 지정하면,
onOptionsItemSelected()가 호출되지 않아 클릭 시 이벤트를 처리할 수 없음.
해결 방법
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_sort, menu);
for(int i=0; i<menu.size(); i++){
MenuItem item = menu.getItem(i);
if(item.getItemId() == R.id.menu_sort){
View view = item.getActionView();
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// write code here
}
});
}
}
return true;
}
onCreateOptionsMenu()에서 파라미터로 넘어오는 menu를 통해 item들을 가져올 수 있다.
가저온 item들 중 actionLayout을 적용한 item을 찾으면 getActionView()를 통해 가져와 onClickListener를 설정함.
'Android > Errors' 카테고리의 다른 글
No Network Security Config specified, using platform default (1) | 2020.05.03 |
---|---|
Fragment에서 ViewPager 사용 시 문제점 (0) | 2020.04.20 |
Navigation Drawer Activity에서 Fragment 전환 (0) | 2020.04.20 |
Fragment에서 startActivityForResult 사용 시 문제점 (0) | 2020.04.20 |
Drawer Navigation 사용 시 menu의 group 나누기 (0) | 2020.04.20 |