2013-06-06 42 views
1

我無法檢索framgentfindFragmentByTag。請幫忙!FindFragmentByTag返回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

謝謝。我發現導致零點異常的問題。我在Fragment中添加額外的構造函數,以便android無法找到Fragment。我也發現如果我添加額外的方法,由調用findFragmentbyTag的活動調用也返回null。 –