[안드로이드 공부]/프래그먼트

[안드로이드] 프래그먼트 안정화 시키기

코코모아 2015. 12. 14. 12:03

아래는 코모스튜디오가 직접 만든 무료 앱이에요
(한 번만 봐주세요 ^^)

01

02

03

정각알림 만들기(말하는시계)

말하는 시계 (취침, 자전거) 

말하는 타이머 음성 스톱워치 

프래그먼트는 액티비티 아빠에게 소속되어있다가 아빠가 잠시 한 눈을 팔 때 붙었다 떨어졌다 하면서 실종되는 문제를 가지고 있다.


즉, 이런 문제 때문에 isAdded를 사용하면 붙어 있나 없나를 알아 낼 수 있지만.. 이건 그냥 임시 방편일 뿐이다.


isAdded()를 쓰면 그냥 피해가지만..... 

이건 너무 많은 비용이 든다.... 처리 못하는게 너무 많아 진다....


can not resolve android.support.v4.app.FragmentManager.

--> getSupportFragmentManager() in your code, not getFragmentManager()


You must call removeView() on the child's parent first"


프래그먼트에서 뷰 제거 확실하게 하기
--> http://comostudio.tistory.com/107



(아래 코드를 Fragment의 OnCreate에  넣으면 발생         

Fragment 에서 Acitivity에 넣을 코드를 넣으면 발생 한다.


android.support.v4.view.ViewPager$LayoutParams cannot be cast to android.support.design.widget.CoordinatorLayout$LayoutParams

--> if (savedInstanceState == null) {

            Fragment newFragment = new aaa();

            getSupportFragmentManager().beginTransaction().add(R.id.container,

                    newFragment).commit();

        }


R.id.container, -->  대신에 액티비티의 메인 레이아웃을 넣으면 그렇게 된다.


탭을 사용할 경우(즉, 2개 이상의 프래그먼트를 포함 할 경우)

- can not be casted a to b

mWorkFragment = (RetainedFragment)fm.findFragmentByTag("a");

b가 들어가야 하는데 a가 들어가면 발생한다.

정확한 태그를 사용 하도록.

태그는 UI가 없는 활동을 할 때 쓴다. 즉, 눈에 보이지 않는 UI



Fragment, listener등 붙었다 떨어졌다를 반복 할 수 있는 곳에서는 절대로 

getString, getResource등을 독자적으로 쓰지 말것.


반드시 해당 컨텍스트를 사용해서 써야 한다.

독단으로 사용하게 되면... 나중에 길을 못찾아서 굶어 죽는다. 그냥... 죽는 이유는 not Attcahed라고만 나온다...

즉, 두 개의 미로가 붙어야 다음 미로로 나아갈 수 있는데... 미로가 떨어 지면... 모르고 가던 쥐는 떨어져서 죽고... 알고 있던 쥐는 벽에 머리를 박고 박고 또 박아서 죽는다.


        mContext = getContext();


        mApplicationContext = getContext().getApplicationContext();


요렇게 써서 mContext.getString() 또는 mApplicationContext.getString()으로 사용하자....


도데체 왜 죽는지 알 수 없어서 미치는 문제다.


또 죽는다...

Can not perform this action after onSaveInstanceState


fm.beginTransaction().add(mWorkFragment, "ManuallyWork").commitAllowingStateLoss();


.commit 대신에 commitAllowingStateLoss();을 쓰자...


프래그먼트 알고 쓰면 안정적이지만, 잘모르고 쓰면 상당히 불안하다....

모든 게시물은 코모스튜디오의 소유이며, 무단 복제 수정은 절대 불가입니다.
퍼가실 경우 댓글과 블로그 주소를 남기고 해당 게시물에 출처를 명확히 밝히세요.