2013-06-06 2 views
1

framgentfindFragmentByTag까지 검색 할 수 없습니다. 도와주세요!FindFragmentByTag returns null

아래 코드를 참조하십시오. 나는 조각을 검색 할 때 누락 NetEaseContent에 대한 태그를 정의하고 반환 한 null :

public class MainActivity extends SlidingFragmentActivity { 

    private static final String MENU_TAG = "menuTag"; 
    private Screen screen; 
    private SlidingMenu mSlideMenu; 
    private final static String CONTENTTAG = "contentTag"; 
    private static final String TAG = "MainActivity"; 
    private NetEaseContent mContent; 
    private Fragment mMenu; 
    private Bundle mBundle; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     setContentView(R.layout.content_frame); 
     setBehindContentView(R.layout.menu_frame); 
     Log.e(TAG, "onCreate"); 
     screen = new Screen(this); 
     Log.e(TAG, "savedInstanceState null"); 
     mSlideMenu = getSlidingMenu(); 
     mSlideMenu.setEnabled(true); 
     mSlideMenu.setShadowWidthRes(R.dimen.shadow_width); 
     mSlideMenu.setShadowDrawable(R.drawable.shadow); 
     mSlideMenu.setFadeDegree(0.35f); 
     mSlideMenu 
       .setBehindOffset((int) ((float) screen.getWidth() * 2.5/(float) 4)); 
     mSlideMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); 


     if (savedInstanceState == null) { 
      mContent = new NetEaseContent(mSlideMenu); 
      getSupportFragmentManager().beginTransaction() 
        .add(R.id.content_frame, mContent, CONTENTTAG).commit(); 
      mMenu = new NetEaseMenuFragment(); 
      getSupportFragmentManager().beginTransaction() 
        .add(R.id.menu_frame, mMenu, MENU_TAG).commit(); 
     } else { 
      Log.e(TAG, "savedInstanceState not null!!!"); 
      mContent = (NetEaseContent)getSupportFragmentManager() 
        .findFragmentByTag(CONTENTTAG); 
      if (mContent != null) { 
       mContent.setSlidingMenu(mSlideMenu); 
      } else { 
       Log.e(TAG, "mContent null!!!"); //here the mContent filed is null 
      } 
      mMenu = getSupportFragmentManager().findFragmentByTag(MENU_TAG); 

     } 
    } 
} 

답변

0

당신이 조각에서 (사실) setRetainInstance에서 onCreate 방법을 사용 했습니까? 그렇지 않으면 조각이 활동주기 동안 파괴됩니다.

+0

감사합니다. 널 포인트 예외를 일으키는 문제점을 발견했습니다. 조각에 여분의 생성자를 추가하여 안드로이드가 조각을 찾을 수 없도록합니다. 또한 findFragmentbyTag를 호출하여 null을 반환하는 활동에 의해 호출 된 추가 메서드를 추가하면 찾을 수 있습니다. –