2013-10-15 101 views
1

在Android中使用滑動菜單,我有很多麻煩,以獲得通過片段的上下文。 主要活動:滑動菜單片段getContext返回null

slide = new SlidingMenu(this); 
    slide.setMode(SlidingMenu.LEFT); 
    slide.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); 
    slide.setFadeDegree(0.35f); 
    slide.setBehindOffsetRes(R.dimen.slidingmenu_offset); 
    slide.setShadowWidthRes(R.dimen.slidingmenu_shadow_width); 
    slide.attachToActivity(this, SlidingMenu.SLIDING_CONTENT); 
    slide.setMenu(R.layout.left_panel); 

    getActionBar().setDisplayHomeAsUpEnabled(true); 

    getFragmentManager().beginTransaction().replace(R.id.leftPanel, new LeftPanel()).commit(); 

我試着使用:

Context context; 

@Override 
public void onAttach(Activity activity) { 
    super.onAttach(activity); 
    Log.d("Spread",activity.toString()); 
    context = activity; 
} 

this.getActivity() 

,它總是返回。 這裏有什麼問題?

編輯:使用上下文的:

 com.nostra13.universalimageloader.core.ImageLoader imageLoader = com.nostra13.universalimageloader.core.ImageLoader.getInstance();       \ 
    imageLoader.init(ImageLoaderConfiguration.createDefault(context)); 

    DisplayImageOptions conf = new DisplayImageOptions.Builder().cacheInMemory(true).cacheOnDisc(true).build(); 
     if (((ParseFile)user.get("profilePicture")).getUrl() != null) imageLoader.displayImage(((ParseFile)user.get("profilePicture")).getUrl(), profPic, conf, new ImageLoadingListener() { 
      @Override 
      public void onLoadingStarted(String imageUri, View view) {     
      } 
      @Override 
      public void onLoadingCancelled(String imageUri, View view) { 
      } 
      @Override 
      public void onLoadingFailed(String imageUri, View view,FailReason failReason) { 

      } 
      @Override 
      public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) { 

      } 
     });*/ 
+0

凡在你的片段的代碼你叫getActivity()或使用上下文,它的崩潰? – dymmeh

+0

就是這樣。 @dymmeh –

+0

雖然你的片段的生命週期在哪裏? – dymmeh

回答

0

在你的代碼更改:getFragmentManager().beginTransaction().replace(R.id.leftPanel, new LeftPanel(MainActivity.this)).commit();

LeftPanel{ 

Context context; 

LeftPanel(Context c) 
{ 
     this.context = c; 
} 

} 

您將獲得在這種情況下,正確的背景下,希望這有助於

+0

我以爲我們不能在碎片上使用構造函數。但使用這種壓力,一切都好!謝謝@lordzden –

0

這將取決於您要使用的上下文。在您真正嘗試並使用該上下文之前,onAttach()可能未被解僱。因此,您的Context context;最終爲空。沒有一些額外的代碼很難說,所以這是我迄今可以做出的唯一假設。

+0

我編輯了這個問題。 onAttach()被調用並且活動不爲null。但是當我使用它時,它會崩潰並告訴我該上下文爲空。 –