Android 개발 Tip.
- Activity Fragment Communication
액티비티 <-> 프래그먼트 함수/변수 접근 방법
Warning(경고) 해결 방법
fragment에서 activity의 함수나 변수에 접근하거나
activity에서 fragment의 함수나 변수에 접근할 필요가 있을 때가 많다.
방법은 간단하다.
1. Fragment -> Activity 접근
Fragment에서 Activity의 함수 호출이나 변수 접근
((Activity이름)getActivity()).함수/변수이름();
예시
1
|
((MyActivity)getActivity()).myFunction();
|
cs |
2. Activity -> Fragment 접근
Activity에서 Fragment의 함수 호출이나 변수 접근
훨씬 복잡하다.
- findFragmentTag를 이용하거나,
- findFragmentById를 이용할 수 있다.
2-1. findFragmentTag 를 이용하는 방법
예시
1
|
((MyFragment) getSupportFragmentManager().findFragmentByTag("myFragmentTag")).myFunction();
|
cs |
2-2 findFragmentById 를 이용하는 방법
예시
1
2
|
MyFragment mf = (MyFragment) getSupportFragmentManager().findFragmentById(R.id.myfragment);
mf.myFunction();
|
cs |
안드로이드는 프래그먼트를 장려하지만 친절하진 않아 보인다.
심지어 저게 가장 일반적인 방법인데
프래그먼트에서 액티비티 함수를 호출할 때
저렇게 쓰면 Warning이 뜬다.
뭐하자는거???
Method invocation 'myfunction' may produce 'NullPointerException'
프래그먼트는 일반적으로 액티비에 attach하거나 detach하면서 쓰는 것이기 때문에
프래그먼트가 액티비티에 attached 가 되지 않은 상태면 NPE 에러가 뜰 수 있다는 것이다.
NPE Warning 없애는 방법
getActivity()가 Null이 된 경우를 피하기 위해
1
2
3
|
if(getActivity() != null){
// insert your code.
}
|
cs |
로 코드를 감싸주면 warning이 사라진다.
'Android 개발 > android :: Tip' 카테고리의 다른 글
[안드로이드 액티비티] 화면 고정 방법 / 화면 회전 시 activity 초기화 현상 막기 (4) | 2019.09.20 |
---|---|
[안드로이드 Toolbar] CollapsingToolbarLayout 스크롤시 툴바 가리기 속성 (0) | 2019.09.20 |
[안드로이드 Toolbar] CollapsingToolbarLayout 에 외부 폰트(font) 적용하기 (2) | 2019.09.19 |
[안드로이드 View] NavigationView 의 menu - item 의 폰트(font) 변경하기 (0) | 2019.09.19 |
[안드로이드 Toolbar] 툴바 font(폰트) 간단히 적용하는 방법 (0) | 2019.09.18 |
[안드로이드 Font] 원하는 폰트를 받아서 폰트 직접 적용하기 (0) | 2019.09.18 |
[안드로이드 Inflate] 현재 layout에 다른 layout 넣기 - Inflater 간단 사용법 (0) | 2019.09.18 |
[안드로이드 액티비티] Activity에서 다른 Activity 변수 접근하기 (4) | 2019.09.16 |
댓글