onAttach ()가 Fragment에서 호출되지 않았습니다.
내 조각은 onAttach(context)
에서 시작될 때 메서드를 호출하지 않습니다 AppCompatActivity
.
XML로 조각 만들기 :
<fragment
android:id="@+id/toolbar"
class="package.MainToolbarFragment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:layout="@layout/fragment_main_toolbar" />
하지만이에서를 확장하는 경우 support.v4.Fragment
, onAttach(context)
전화!
무엇이 문제일까요?
물론 모든 조각을에서 확장 할 수 v4.Fragment
있지만 원하지는 않습니다. 나쁜 습관입니까? 또한 프로젝트 min sdk 14.
이 메소드가 API 23에 추가 되었기 때문에 호출되지 않습니다. API 23 (marshmallow)이있는 기기에서 애플리케이션을 실행하면 onAttach(Context)
호출됩니다. 모든 이전 Android 버전에서 onAttach(Activity)
호출됩니다.
http://developer.android.com/reference/android/app/Fragment.html#onAttach(android.app.Activity)
지원 라이브러리 조각은 플랫폼에 독립적입니다. 따라서 모든 API 버전에서 작동합니다.
Google은 더 이상 사용되지 않는 API 사용을 중단하기를 원하지만
@Override
public void onAttach(Context context) {
super.onAttach(context);
...
너무 새롭기 때문에 널리 불려지지 않습니다. 또한 구현해야합니다.
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
...
나를 위해 그들은 동일하지만 KISS를 좋아하고 다른 지원 라이브러리를 도입하면 APK가 약 1000kb로 두 배가되는 경향이 있습니다. 어제 SDK 만 업데이트했습니다.
많은 경우와 같이 여기서 유형을 상호 교환 할 수없는 이유는 공개적으로 볼 수 있고 (하위 클래스로) 더 전문화 되어 있기 때문에 Activity
an Activity
가 제공 될 때를 취하는 메서드 가 계속 호출 되기 때문입니다. 우선권을 가지다.Activity
Context
앞서 언급 한 설명 외에도을 사용 onAttach()
하여 부모 활동에서 조각 내부에 포함 된 데이터를 업데이트 하려는 경우 활동 내부의 컬렉션 변수가 null 일 때 문제가 발생할 수 있다는 점에 유의하는 것이 중요하다고 생각합니다. 또는 조각이 부 풀릴 때 비어 있습니다. 활동의 수명주기 내 어느 시점에서 데이터 모델이 변경 될 수 있으며 조각 내에서 업데이트해야합니다. 이미 부풀린 조각에 대한 참조를 얻으려고 시도 할 수 있지만 onAttach()
Context 또는 Activity 개체를 포함하는 재정의를 사용하는 경우에도 실행되지 않는 코드를 단계별로 살펴보면 찾을 수 있습니다 .
프래그먼트에 대한 리스너를 만들고 onAttach()
콜백 메서드 에서 리스너를 초기화하려는 onAttach()
경우, 액티비티에 프래그먼트를 추가 할 때 아래와 같이 태그 매개 변수를 제공하지 않으면는 실행되지 않습니다.
// in the Activity
getFragmentManager().beginTransaction()
.add(
R.id.fragmentContainer,
CustomFragment.newInstance(customDataSource),
CustomFragment.TAG // Must be passed in for the code below to work
).commit();
// Getting a reference to the fragment later on (say to update your data model inside the fragment (in onActivityResult())
CustomFragment fragmentDelegate = (CustomFragment) getFragmentManager().findFragmentByTag(CustomFragment.TAG);
fragmentListener.updateDataSource(customDataSource);
참고 URL : https://stackoverflow.com/questions/32604552/onattach-not-called-in-fragment
'code' 카테고리의 다른 글
번들의 내용을 Logcat에 인쇄 하시겠습니까? (0) | 2020.11.26 |
---|---|
Bash : 날짜 반복 (0) | 2020.11.26 |
java.lang.RuntimeException : com.android.builder.dexing.DexArchiveMergerException : Android Studio 3.0에서 dex를 병합 할 수 없습니다. (0) | 2020.11.26 |
투명한 단일 픽셀 이미지의 최소 파일 크기 (0) | 2020.11.26 |
angularjs에서 선택 상자의 기본값을 어떻게 설정합니까? (0) | 2020.11.26 |