滑动菜单片段 getContext 返回空值



我在 android 中使用滑动菜单,我在通过片段获取上下文时遇到了很多麻烦。主要活动:

    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) {
            }
        });*/

关于您的代码更改: getFragmentManager().beginTransaction().replace(R.id.leftPanel, new LeftPanel(MainActivity.this)).commit();

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

在这种情况下,您将获得正确的上下文,希望这有所帮助

这取决于您尝试使用上下文的位置。 在您实际尝试使用该上下文之前,onAttach()可能尚未触发。 因此,您的Context context;最终为空。 如果没有一些额外的代码,很难判断,所以这是我迄今为止可以做出的唯一假设。

最新更新