在GridView(Android)中按图像时应用程序崩溃

时间:2013-01-09 17:35:29

标签: android gridview onitemclicklistener

我有这个GridView我用来显示图像。 在底线我想按一个图像,我在另一个活动中的视图将获得图像。

这是我在OnItemClickListener中使用的代码 -

        GridView grid = (GridView) findViewById(R.id.grid_view);
    grid.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int position,
                long arg3) {
            // TODO Auto-generated method stub
            View bg = (View)findViewById(R.id.background);
            bg.setBackgroundResource(ImageAdapter.mThumbIds[position]);

            finish();

        }
    });

    grid.setAdapter(new ImageAdapter(this));

我的应用程序崩溃的原因是因为View(bg)返回null。我该怎么办呢?并使它正确? 我真的很喜欢有人来帮我这个..谢谢!

2 个答案:

答案 0 :(得分:1)

正如您所说R.id.background中有activity_main.xml,您必须首先使用setContentView(...)将此布局分配给您的活动:

public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);

  GridView grid = (GridView) findViewById(R.id.grid_view);
  grid.setAdapter(new ImageAdapter(this));

  gridview.setOnItemClickListener(new OnItemClickListener() {
      public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
          View bg = (View)findViewById(R.id.background);
          bg.setBackgroundResource(ImageAdapter.mThumbIds[position]);

          finish();
      }
  });
}

您的findViewById()需要该内容视图。 这是带有ImageAdapter的{​​{3}}的默认用法。

注意:使用此解决方案,您还应该在同一版面中使用身份GridView的{​​{1}}。

答案 1 :(得分:0)

感谢大家的帮助。 最后我只是传递了图像的来源,并在其他视图中将其设置为开始。 不管怎样,谢谢!