이거 한번 돌리면 된다 .

추가로 바텀네비게이션 뷰에서 menu를 등록했는데도 xml화면에 안보이는 경우가 있는데 그런 경우 빌드 한번 하면 잘 보인다. 

 

+ 이렇게 됐었는데 진짜 안되는 경우 에뮬레이터든 폰이든 실행 한번해주고 시간이 지나면 xml 화면에 보인다. 그리고 애당초 <selector>는 drawable이 아니라  color 폴더에 만들어서  넣고 사용하자 . 실행은 되겠지만 원칙적으로는 색깔관련이므로 color 폴더가 맞는 듯 .  계속 bottomnavigationview가 안나와서 당황 ;

 

1. 메니페스트에 <activity android:name =" .경로 . fragment."> 이런 식으로 프래그먼트를 입력하는 경우가 있다. 해당 부분에는 프레그먼트가 속해있는 액티비티를 입력하자!

 

 

 

2. 프래그먼트로 화면 전환을 하고 싶은 경우

 

틀린 코드 

 

Intent intent =new Intent(MainActivity.this, fragment.class);
startActivity(intent);

이런 식으로 intent의 두번 째 매개변수에 fragment를 쓰는 경우가 있는데 해당 매개변수는 액티비티를 받아야 하기 때문에 fragment가 fragment로 이동하고 싶으면 fragment가 붙어있는 Activity로 이동해야한다.

 

 

옳은 코드

 

Intent intent =new Intent(MainActivity.this ,SecondActivity.class);
startActivity(intent);

해당 코드는 SecondActivity에 fragment가 붙어 있다고 가정한다.

프래그먼트 안에서 context 객체가 필요한 경우에도 2가지 경우의 상황이 있다.

 

  1. 프래그먼트가 액티비티에 붙어있는 경우
  2. 프래그먼트가 아직 액티비티에 붙지 않은 경우

아래 설명은 1번 상황이라고 가정하고 공식 문서에서의 설명과 stackoverflow에서 예시를 가지고 왔다.

 

공식 문서 

 

https://developer.android.com/guide/components/fragments.html?hl=ko

 

주의: Fragment 내에 Context 객체가 필요한 경우, getContext()를 호출하면 됩니다. 하지만 getContext()를 호출하는 것은 프래그먼트가 액티비티에 첨부되어 있는 경우로 국한해야 한다는 점에 유의하세요. 프래그먼트가 아직 첨부되지 않았거나 수명 주기가 끝날 때 분리되었다면 getContext()는 null을 반환합니다.

 

 

사용법 예시 

 

https://stackoverflow.com/questions/18320713/getsupportactionbar-from-inside-of-fragment-actionbarcompat

 

getSupportActionBar from inside of Fragment ActionBarCompat

I'm starting a new project that uses the AppCompat/ActionBarCompat in v7 support library. I'm trying to figure out how to use the getSupportActionBar from within a fragment. My activity that hosts ...

stackoverflow.com

 

((AppCompatActivity)getActivity()).getSupportActionBar().setSubtitle(R.string.subtitle);

 

이런 식으로 사용한다. 그렇지만 공식 문서에도 얘기 했듯이 프래그먼트가 액티비티에 붙어 있는 경우에만 가능한 경우다. 2번 상황인 경우는 콜백 함수인 onAttach()를 사용해야 하는데 이는 시간이 나면 추가로 작성할 예정이다. 

+ Recent posts