【问题标题】:Changing image source of an imageview in a different layout在不同的布局中更改图像视图的图像源
【发布时间】:2017-04-07 14:35:49
【问题描述】:

我在任何地方都找不到解决方案,我对编程还是很陌生,所以这可能是一个简单的问题。

在我的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;

感谢您的帮助!

【问题讨论】:

    标签: java android android-layout nullpointerexception


    【解决方案1】:

    请记住,使用布局膨胀的类只会在该布局中找到视图,尝试 findById 不在该布局中的视图会导致错误。 为了解决这个问题,定义一个自定义布局充气器,用图像充气布局,然后使用充气的视图并对其执行 findById。

    【讨论】:

    • 感谢您的回复,我尝试了以下方法:LayoutInflater inflater = (LayoutInflater)getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); v = inflater.inflate(R.layout.overlay, null); imageView = (ImageView) v.findViewById(R.id.filterview); 消除了错误,但似乎没有更改图像视图的来源。这是你的意思吗?
    • 是的,告诉我如何在视觉上确认这个来源的变化?该特定图像如何与活动和绑定布局相关。
    • 视觉上是的,如果它工作的图像与默认来源不同,那么当我选择不同的选项时,它应该显示在其他所有内容之上。我测试了选择号码是否正在改变并且工作正常。所以问题在于改变来源。该图像根本与活动无关,它是布局中的图像视图,在服务启动时显示。
    • 没关系。我找到了解决办法,谢谢你的回复。
    • 哪个是?我很好奇
    【解决方案2】:

    试试这个:

    ImageView mImageView = (ImageView) MainActivity.this.getLayoutInflater().inflate(R.layout.layout,null).findViewById(R.id.imageView);
            mImageView.setImageResource(R.drawable.icon);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多