2013-01-09 64 views
0

我有用于显示图像的GridView。 在底线我想按下一个图像,并且我在另一个活动中的视图将获取图像。在GridView中按下图像时的应用程序崩溃(Android)

这是我使用的代码我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)); 

的原因,我的应用程序崩溃是因为视图(BG)的回报为空。我该如何解决它?并使其正确? 我真的很喜欢有人来帮助我这个..谢谢!

+0

不确定可能是你没有得到带有id的视图请检查是否(View)findViewById(R.id.background);返回null或不是 – Pragnani

+0

你是对的!我确实将视图视为null。为什么它会发生,因为视图不在我提交的Activity中?我该如何改变它? –

+0

@AmirFoghel:在哪个布局中有'R.id.background'视图? –

回答

1

正如你说你在你的activity_main.xmlR.id.background,你必须分配该布局到你的活动先是用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()需要一个内容视图。 这是GridViewImageAdapter的默认使用情况。

注意:使用此解决方案,您还应该在GridView的编号为grid_view的布局相同。

0

谢谢大家的帮忙。 终于我刚刚通过图像的来源,并将其设置onStart在我的另一个视图。 无论如何,谢谢!