ActionBar에 Navi 관련 되서 적어 놓을 생각 입니다.
중심 내용은 PreferenceActivity와 PreferenceFragment를 사용했을 때 방법입니다.
ActionBar에 button을 눌렀을 때 이벤트를 발생하고자 할 경우에는 다음과 같은 설정이 필요합니다.
1. OnCreate함수에서 아래 부분의 세가지 선택사항이 있습니다.
@Override
public void onCreate(Bundle savedInstanceState) {
...
// ActionBar에 Home 버튼 표시 할 떄 "<" 부분을 표시 할 지 결정하는 함수
getActivity().getActionBar().setDisplayHomeAsUpEnabled(true);
// Home 버튼을 Enable / Disable 할지를 결정
getActivity().getActionBar().setHomeButtonEnabled(true);
// OptionMenu를 사용할지 결정
// 이 부분을 설정해줘야 onCreateOptionsMenu 함수가 호출 됩니다.
setHasOptionsMenu(true);
}
2. 설정이 완료 되었으면 onOptionsItemSelected 함수를 overriding 만 해주면 사용이 가능합니다.
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
// doing something
return true;
}
return false;
}
이때!!! 중요한 사항을 지금 말씀 드리겠습니다.
아시겠지만 PreferenceFragement는 단독으로 실행되는 게 아니라 PreferenceActvity 내부에서 화면을 분할 시켜 사용하는 것이지요. 따라서, overriding 되는 함수는 부모인 PreferenceActvity 를 거쳐 실행이 되게 됩니다.
만약! PreferenceActvity 부분에서
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// doing something
return true;
}
위와 같이 return을 true 막게 될 경우 자식인 PreferenceFragement 에서는 onOptionsItemSelected 함수가 호출이 되지 않는 상황이 일어 납니다.!!!( 3일간.. 힘들었음..)
꼭 PreferenceActvity 에서 overriding 해서 함수를 사용할 경우, PreferenceFragement와 상관 관계를 생각해보고 진행하시길 바랍니다.
Java의 기초인 부분인데... 소스가 많거나 복잡할 경우 위 사항을 파악하는데 시간이 걸리더라구요.
그럼 오늘도 즐코딩!
'나의 플랫폼' 카테고리의 다른 글
[MS Word] 위첨자를 검색 한 후, 내용 변경 (1) | 2018.02.08 |
---|---|
[Android][iOS] AccessToken을 어떻게 관리 할까?? (0) | 2017.09.21 |
[Android] FragmentTabHost addTab 시 Bundle 전달 (0) | 2015.12.09 |
[Json] Json 웹 뷰어 (0) | 2015.11.27 |
[ HTML 5 ] 여러가지 곡선 운동 (0) | 2011.12.06 |