2014-05-19 1 views
0

Activity 안에 Fragment을 사용하고 있습니다. FragmentOnInitListener 인터페이스를 가지고있어서 메서드라고하는 Activity 호스트에 데이터를 전달합니다. 이 문제는 몇 번 나는 그것이 여기에 Activity#onCreate에 이니셜되는 객체에서 NullPointerException를 얻을 수 (일반적으로 화면 잠금 및 잠금 해제) 코드라는 것이다 :활동 및 조각 on call order

요약
// Activity 
public void onCreate() { 
    super.onCreate(); 
    // ...some code... 

    myObject = new MyObject(); 
} 

@Override 
public void onInit(ObjectProperty property) { 
    myObject.setProperty(property); // Here I get NullPointerException 
} 


// Fragment 
public void onCreate() { 
    // ... some code ... 

    property = new ObjectProperty(); 
    listener.onInit(property); 
} 
@Override 
public void onAttach(Activity activity) { 
    listener = (OnInitListener) activity; // This part is actually surrounded by try/catch, so don't worry about it 
} 

, Fragment 객체를 초기화해야하며, 그것을 청취자에게 건네 주면 Activity은 그것을 다른 객체로 설정할 수 있습니다.

Fragment#onCreateActivity#onCreate()보다 먼저 호출되고 있는데 그 이유가 내가 NPE이 되겠지만 잘못된 것일 수 있습니다. 어떤 아이디어?

+0

중복 일 수 있습니까? http://stackoverflow.com/questions/13941584/can-some-draw-lifecycle-of-fragment-and-its-parent-fragmentactivity – Birdy

답변

0

onCreate()에 대해서는 잘 모르겠지만, onCreate()은 항상 해당 활동의 onCreate()이 될 것입니다. 조각을 만들면 항상 onActivityCreated()을 사용합니다. 이것은 액티비티가 생성 된 후에 호출됩니다.

+0

활동 onCreate()가 항상 먼저 호출 된 다음 onAttach()가 onCreate로 대체됩니다.) of Fragment. –

+0

@PratikGoyal이 답장을 보내 주셔서 감사합니다.하지만 'onActivityCreated()'를 사용하지 않으시겠습니까? –