【问题标题】:Unable to display images in Gridview using fragment无法使用片段在 Gridview 中显示图像
【发布时间】:2016-01-15 06:04:09
【问题描述】:

我是 Android 新手,目前想创建一个片段来显示 gridview 布局。但是我无法显示图像并返回以下错误:

      java.lang.NullPointerException
      at miui.util.AttributeResolver.i(SourceFile:35)
      at miui.util.AttributeResolver.resolveInt(SourceFile:145)
      at miui.util.AttributeResolver.isUsingMiuiTheme(SourceFile:179)
      at miui.os.Environment.isUsingMiui(SourceFile:99)
      at android.view.ViewConfigurationInjector.get(ViewConfigurationInjector.java:18)
      at android.view.ViewConfigurationHelper.get(ViewConfigurationHelper.java:10)
      at android.view.ViewConfiguration.get(ViewConfiguration.java:357)
      at android.view.View.<init>(View.java:3452)
      at android.widget.ImageView.<init>(ImageView.java:114)
      at info.androidhive.slidingmenu.GridViewAdapter.getView(GridViewAdapter.java:52)
      at android.widget.AbsListView.obtainView(AbsListView.java:2257)

下面是我的片段代码

公共类 HomeFragment 扩展 Fragment {

public HomeFragment(){}
private GridViewAdapter adapter;
private GridView gridView;
private int columnWidth;
private Utils utils;
private PrefManager pref;
private Integer[] photosList;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {


    View rootView = inflater.inflate(R.layout.fragment_home, container, false);
    gridView = (GridView) rootView.findViewById(R.id.grid_view);
    gridView.setVisibility(View.VISIBLE);
    gridView.setAdapter(new GridViewAdapter(getActivity()));
    return rootView;
}

}

下面是我的 gridview 适配器代码

public class GridViewAdapter extends BaseAdapter {

    private Activity _activity;
    private LayoutInflater inflater;
    private int imageWidth;
    private Context context;

    public GridViewAdapter(Activity activity) {
        this._activity=activity;

    }

    @Override
    public int getCount() {
        return this.photoList.length;
    }

    @Override
    public Object getItem(int position) {
        return null;
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ImageView imageView;
        if (inflater == null)
            inflater = (LayoutInflater) _activity
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        if (convertView == null) {
            convertView = inflater.inflate(R.layout.grid_item_photo, null);
            imageView = new ImageView(context);
            imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
            imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
            imageView.setPadding(8, 8, 8, 8);
        }
        else {
            imageView = (ImageView) convertView;
        }
        imageView.setImageResource(photoList[position]);
        return imageView;
    }

    public Integer[] photoList = {

            R.drawable.ic_whats_hot, R.drawable.ic_home,
            R.drawable.ic_launcher, R.drawable.ic_communities,
            R.drawable.ic_people, R.drawable.ic_whats_hot
    };
}

错误行显示我的行在从上下文中获取图片时出现问题,可以指教吗?

imageView = new ImageView(context);

【问题讨论】:

  • 你是动态创建图像视图吗?或者你想在你的布局中使用 imageview
  • 第 52 行 -imageView = new ImageView(context);
  • 您的上下文对象为空。你可以试试 _activity
  • @playmaker420,我想创建一个仅在 2 列中显示图像的简单网格视图布局
  • @playmaker420,谢谢。它现在可以与 _activity 一起使用。想问一下为什么我们不能使用上下文?

标签: android gridview fragment


【解决方案1】:

您的上下文对象为空。 因为你有你的活动背景。所以用这个

imageView = new ImageView(_activity);

【讨论】:

    【解决方案2】:

    由于返回为 null 的是您的上下文,因此我们需要提供一个不为 null 的参数。一些提供上下文的常见类是 Activity、Application、Service 和 View。在第 9 行,您初始化了一个 Activity 对象 _activity。

    由于这个对象有上下文,你可以用它来代替“上下文”。

    imageView = new ImageView(_activity);
    

    【讨论】:

    • 感谢@John Riggs 对上下文的解释和知识分享。我现在对上下文有了更好的理解。
    【解决方案3】:

    您正在使用未初始化的上下文。

    请使用 HomeFragment 中通过 GridViewAdapter 解析的 _activity。

    错误是您的“上下文”从未在您的 GridViewAdapter 中初始化。

    替换为imageView = new ImageView(_activity);

    【讨论】:

      猜你喜欢
      • 2012-03-10
      • 1970-01-01
      • 2011-03-05
      • 1970-01-01
      • 1970-01-01
      • 2021-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多