8

나는 이상한 문제가 있습니다. getActivity() 메서드 항상은 조각 내부에 null을 반환합니다. onAttach() 및 onCreateView()가 실행을 마친 후에이를 호출합니다.() (이 코드는 조각 활동에서 onCreate()로부터 호출되는) 안쪽 getActivity()는 항상 조각 안에 null을 반환합니다.

는 :

이 단편은 단편의 스택을 포함하는 FragmentActivity() 안에 살고 및 I 그것에 단편을 추가하는 방법은

SmartFragment fragment; 
fragment = (SmartFragment) Fragment.instantiate(this, 
fragmentClassName, params);  
mStackOfFragments.add(fragment); 
FragmentTransaction trans = getSupportFragmentManager().beginTransaction(); 
trans.add(R.id.tabcontent, fragment); 
trans.addToBackStack(null); 
trans.commitAllowingStateLoss(); 

나는 분명히 충분히 희망

편집 1 :

getActivity()를 호출 :

,
protected OnDoneListener nDoneListener = new OnDoneListener() { 

    @Override 
    public void OnDone(final int counter, final String name) { 


     if (getActivity() != null) 
      ((TabActivity) getActivity()).RunOnUiThread(new Runnable() { 

... ...

이 콜백은 다른 클래스에서 호출되고있다.

편집 2 :

class MemoryManager() 
{ 

    private OnDoneListener nDoneListener; 

    public void setOnDoneListener(OnDoneListener onDoneListener) 
    { 
    this.onDoneListner = onDoneListener; 
    } 

    public void updateUiOnRequestFinish() 
    { 
     onDoneListener.onDone(); 
    } 

} 

MemoryManaget 자체가 다른 콜백()에서 updateUiOnRequestFinish 호출

편집 3 :

FragmentManager 로그는 다음과 같습니다

04-08 18:44:05.950: V/FragmentManager(16280): Commit: BackStackEntry{41f9bd60} 
`04-08 18:44:05.950: D/FragmentManager(16280): mName=null mIndex=-1 mCommitted=false 
04-08 18:44:05.950: D/FragmentManager(16280): Operations: 
04-08 18:44:05.950: D/FragmentManager(16280):  Op #0: ADD FragmentMyProfile{41f9bc20 id=0x7f070126} 
04-08 18:44:05.950: V/FragmentManager(16280): Setting back stack index 0 to BackStackEntry{41f9bd60} 
04-08 18:44:05.950: V/FragmentManager(16280): Run: BackStackEntry{41f9bd60 #0} 
04-08 18:44:05.950: V/FragmentManager(16280): Bump nesting in BackStackEntry{41f9bd60 #0} by 1 
04-08 18:44:05.950: V/FragmentManager(16280): Bump nesting of FragmentMyProfile{41f9bc20 id=0x7f070126} to 1 
04-08 18:44:05.950: V/FragmentManager(16280): add: FragmentMyProfile{41f9bc20 id=0x7f070126} 
04-08 18:44:05.950: V/FragmentManager(16280): Allocated fragment index FragmentMyProfile{41f9bc20 #0 id=0x7f070126} 
04-08 18:44:05.950: V/FragmentManager(16280): moveto CREATED: FragmentMyProfile{41f9bc20 #0 id=0x7f070126} 
04-08 18:44:05.950: V/FragmentManager(16280): moveto ACTIVITY_CREATED: FragmentMyProfile{41f9bc20 #0 id=0x7f070126} 
04-08 18:44:05.990: V/FragmentManager(16280): moveto STARTED: FragmentMyProfile{41f9bc20 #0 id=0x7f070126} 
04-08 18:44:06.030: V/FragmentManager(16280): moveto RESUMED: FragmentMyProfile{41f9bc20 #0 id=0x7f070126} 
` 

그리고 그것은 나에게 잘 보인다. 그래서이 버그는 콜백에서 getActivity()를 호출하는 방식과 관련이 있다고 생각합니다. 당신이 "android.support.v4.app를 사용하는 경우

+1

단편 수명주기에 익숙하지 않은 경우 이상하게 보입니다 ... http://developer.android.com/guide/components/fragments.html#CoordinatingWithActivity ...이 단락 앞의 몇 줄을 확인하십시오 ... Activity Constructor에서 Activity에 Fragment를 추가 했습니까? – Selvin

+0

getActivity() 줄에 코드를 넣을 수 있습니까? –

+0

Selvin : 귀하의 의견에 따르면 이것이 사소한 문제라는 것을 암시합니다. 물론 당신이 옳았기를 바랄뿐입니다. 나는이 링크와 내용을 알고 있고 여전히이 문제가있다. – Nativ

답변

7

이 문제는"android.app.Fragment "또는"android.support.v4.app.Fragment "

의 사용 getActivity()이 될 수 있습니다. 조각 (Fragment) "을 선택하면"android.app.Fragment "에서 getActivity를 사용하지 않는지 검토해야합니다.

+0

이 내 문제가 해결되었습니다. Holo Everywhere를 사용할 때 getActivity() 대신 getSupportActivity()를 사용합니다. 그래도 조각이 처음로드 될 때 getActivity()가 작동하는 이유는 아직 알 수 없지만 멀리 이동할 때와 뒤로 이동할 때 ... – speedynomads

+0

당신은 옳은 사람이었습니다! 고마워. – Nativ

관련 문제