아래는 코모스튜디오가 직접 만든 무료 앱이에요(한 번만 봐주세요 ^^)
프래그먼트는 액티비티 아빠에게 소속되어있다가 아빠가 잠시 한 눈을 팔 때 붙었다 떨어졌다 하면서 실종되는 문제를 가지고 있다.
즉, 이런 문제 때문에 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();을 쓰자...
프래그먼트 알고 쓰면 안정적이지만, 잘모르고 쓰면 상당히 불안하다....
' [안드로이드 공부] > 프래그먼트' 카테고리의 다른 글
모든 게시물은 코모스튜디오의 소유이며, 무단 복제 수정은 절대 불가입니다. |
퍼가실 경우 댓글과 블로그 주소를 남기고 해당 게시물에 출처를 명확히 밝히세요. |