0

사용자 설정에 따라 런타임 중에 동적으로 생성되는 여러 개의 Fragment가있는 FragmentPagerAdapter가 있습니다.FragmentPagerAdapter 내부의 조각 일부를 바꿉니다.

사용자 설정에 따라 각 단편의 일부를 다른 단편으로 대체해야합니다 (때로는 단편에 단락 막대를 추가해야하는 경우도 있음). 문제는

OverviewProgressElementFragment fragment = new OverviewProgressElementFragment(); 
    FragmentTransaction ft = getFragmentManager().beginTransaction(); 
    ft.replace(R.id.pBarContainer, fragment); 
    ft.commit(); 

,이 예외가 발생 FragmentTransaction ft = getFragmentManager().beginTransaction();이 줄 것을 :

10-18 17:51:57.822: E/AndroidRuntime(1877): FATAL EXCEPTION: main 
10-18 17:51:57.822: E/AndroidRuntime(1877): java.lang.NullPointerException 
10-18 17:51:57.822: E/AndroidRuntime(1877):  at com.xxx.xxx.OverviewEntityFragment.SetEntity(OverviewEntityFragment.java:119) <- the method in which I call the transaction 
10-18 17:51:57.822: E/AndroidRuntime(1877):  at com.xxx.xxx.PageAdapter.getItem(PageAdapter.java:27) 
10-18 17:51:57.822: E/AndroidRuntime(1877):  at android.support.v4.app.FragmentPagerAdapter.instantiateItem(FragmentPagerAdapter.java:97) 
10-18 17:51:57.822: E/AndroidRuntime(1877):  at android.support.v4.view.ViewPager.addNewItem(ViewPager.java:832) 
10-18 17:51:57.822: E/AndroidRuntime(1877):  at android.support.v4.view.ViewPager.populate(ViewPager.java:982) 

내 hierachy가 다음입니다 :

  1. MainActivity가 포함

    이 내 대체 코드입니다 FragmentTabHost

  2. 부분적으로 조각 콘텐츠를 교체 할려고 할 때 'Subfragment'동적

오류는 3 부에 occures로드해야

  • 조각> 조각 -> FragmentPagerAdapter - ViewPager를 포함

  • 하나 개의 탭.

    @Override 
    public Fragment getItem(int position) 
    { 
        OverviewEntityFragment oeFragment = new OverviewEntityFragment(); 
        oeFragment.SetEntity(_entityList.get(position)); 
        return oeFragment; 
    } 
    

    예외가 SetEntity() -Method에 occures : 여기

    FragmentPagerAdapter 내에서 단편의 생성 코드이다.

    public void SetEntity(OverviewEntityData entityData) 
    { 
         FragmentTransaction ft = getFragmentManager().beginTransaction(); 
    } 
    

    이 같은 hierachy에서 조각의 부품을 교체 할 수 없습니다 또는 내가 뭔가 잘못하고있는 중이 야 : 난 그냥 쓸 때

    public void SetEntity(OverviewEntityData entityData) 
    { 
    _entityData = entityData; 
    
    if ((_entityData.getEntityType() != ENTITY_TYPE.MEMORY) 
    && (_entityData.getEntityType() != ENTITY_TYPE.NO_PAGE_FOUND)) 
    { 
        OverviewProgressElementFragment fragment = new OverviewProgressElementFragment(); 
        fragment.SetEntityData(_entityData); 
        FragmentTransaction ft = getFragmentManager().beginTransaction(); 
        ft.replace(R.id.pBarContainer, fragment); 
        ft.commit();    
        } 
    } 
    

    예외는 occures :이 코드는?

    정말 도움이됩니다.

    편집 :

    나는getChildFragmentManager()을 사용하려고하지만,이 예외 다음 발생 :

    10-18 19:02:48.622: E/AndroidRuntime(2056): FATAL EXCEPTION: main 
    10-18 19:02:48.622: E/AndroidRuntime(2056): java.lang.IllegalStateException: Activity has been destroyed 
    10-18 19:02:48.622: E/AndroidRuntime(2056):  at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1358) 
    10-18 19:02:48.622: E/AndroidRuntime(2056):  at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:595) 
    10-18 19:02:48.622: E/AndroidRuntime(2056):  at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:574) 
    10-18 19:02:48.622: E/AndroidRuntime(2056):  at com.xxx.xxx.OverviewEntityFragment.SetEntity(OverviewEntityFragment.java:121) 
    10-18 19:02:48.622: E/AndroidRuntime(2056):  at com.xxx.xxx.PageAdapter.getItem(PageAdapter.java:27) 
    10-18 19:02:48.622: E/AndroidRuntime(2056):  at android.support.v4.app.FragmentPagerAdapter.instantiateItem(FragmentPagerAdapter.java:97) 
    
  • 답변

    0

    FragmentActivity 내부는 getSupportFragmentManager() 대신 getFragmentManager()를 호출해야합니다.

    내선 FragmentgetChildFragmentManager()으로 전화하십시오.

    편집 :

    당신이 당신의 조각 만들

    :

    OverviewEntityFragment oeFragment = new OverviewEntityFragment(); 
    

    이 단편은 아직 Activity에 연결되지 않은, 따라서 예외.

    나는 FragmentManagerSetEntity() 방법으로 전달할 수있을 것이라고 추측합니다.하지만 어떻게 해결 될지 확신하지 못합니다.

    +0

    답장을 보내 주셔서 감사합니다.하지만 내 조각 내에서 getChildFragmentManager()를 사용하면 다른 예외가 발생합니다. 원래 게시물을 업데이트했습니다. – user1567896

    관련 문제