[英]Sliding menu Fragment getContext return null
我在android中使用滑動菜單,但在通過Fragment獲取上下文時遇到了很多麻煩。 主要活動:
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()
它總是返回null 。 怎么了
編輯:使用上下文:
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) {
}
});*/
這將取決於您嘗試在何處使用上下文。 在您實際嘗試使用該上下文之前,可能未觸發onAttach()
。 因此,您的Context context;
最終為空。 沒有一些額外的代碼很難說,所以這是到目前為止我可以做的唯一假設。
在代碼更改上: getFragmentManager().beginTransaction().replace(R.id.leftPanel, new LeftPanel(MainActivity.this)).commit();
LeftPanel{
Context context;
LeftPanel(Context c)
{
this.context = c;
}
}
在這種情況下,您將獲得正確的上下文,希望這對您有所幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.