2017-04-07 50 views
0

我无法在任何地方找到解决方案,我对编程还很陌生,所以这可能是一个简单的问题。在不同的布局中更改图像视图的图像源

在我MainActivity我采取ViewPager的位置。根据这个位置,我想改变放置在布局中的ImageView的来源,该布局将在服务中膨胀。但与我的代码,我一直得到NullPointerException。 我是否需要声明ImageView,因为它的布局与当前显示的布局不同?

public void OnClick(View view) { 


    pagenumber = viewPager.getCurrentItem(); 
    imageView = (ImageView) findViewById(R.id.filterview); 

    switch (pagenumber){ 
     case 0: imageView.setImageResource(R.drawable.goghfilter); 
      break; 
     case 1: imageView.setImageResource(R.drawable.background3); 
      break; 

感谢您的帮助!

回答

0

清楚地记得与布局充气只能找到在布局视图类,尽量不findById在布局视图会导致错误。 要解决这个问题,请定义一个自定义布局充气器,用图像膨胀布局,然后使用充气的视图并对其执行findById。

+0

感谢您的答复, 我尝试以下: 'LayoutInflater充气=(LayoutInflater)getBaseContext()getSystemService(Context.LAYOUT_INFLATER_SERVICE); v = inflater.inflate(R.layout.overlay,null); imageView =(ImageView)v.findViewById(R.id.filterview);' 这摆脱了错误,但它似乎并没有改变imageview的来源。这是你的意思吗? –

+0

是的,告诉我如何确认这个来源的变化,视觉?那个特定的图像如何与活动和绑定布局相关? – Remario

+0

视觉效果是的,如果它选择不同的选项,当它的作用不同于默认来源的图像时,它应显示在所有其他选项之上。我测试了如果选择号码正在改变,并且工作正常。所以问题在于改变源头。该图像与活动无关,它是在服务启动时显示的布局中的imageview。 –