【问题标题】:NullPointerException when using setImageBitmap in onPostExecute在 onPostExecute 中使用 setImageBitmap 时出现 NullPointerException
【发布时间】:2016-10-06 17:07:40
【问题描述】:

我在使用setImageBitmap 时收到NullPointerException

“结果” 是有效位图。

这是我的代码:

protected void onPostExecute(Bitmap result) {
    super.onPostExecute(result);            
    try {

        ImageView imageView1;
        imageView1 = (ImageView) findViewById(R.id.imgbanner);
        imageView1.setImageBitmap(result);

        return;

    } catch (Exception e) {
        logMensajes("Error imageload onPostExecute: "+e.toString());
    }
}

XML

<ImageView
    android:id="@+id/imgbanner"
    android:layout_width="match_parent"
    android:layout_height="100dp"
    android:layout_below="@+id/txtTitulo"/>

【问题讨论】:

  • 告诉我们你是如何得到result的。
  • 是否以活动形式 onPostExecute ?
  • 提示:您可能不应该在 AsyncTask 中使用 findViewById。其次,请显示所有必要代码的minimal reproducible example 以获取此onPostExecute
  • 尝试在异步响应中添加runOnUiThread(new Runnable(){ //your code });
  • 应该在 AsyncTask 中调用 findViewById 吗?

标签: android android-asynctask


【解决方案1】:

ImageView Activity 设为范围而不是在您的异步任务中:

public class MyActivity extends AppCompatActivity{

    ImageView mImageView;

    @Override
    protected void onCreate(Bundle savedInstanceState){
         super.onCreate(savedInstanceState);
         setContentView(R.layout.your_view_xml);
         mImageView = (ImageView) findViewById(R.id.imgbanner);
    }


    class MyAsync extends AsyncTask<Void, Integer, Bitmap>{

       @Override
       protected Bitmap doInBackground(Void ...){
            //....
       }

       @Override
       protected void onPostExecute(Bitmap result) {
        super.onPostExecute(result);   
           if(result != null){
             mImageView.setImageBitmap(result);
           }          
       }
    }
}

【讨论】:

    【解决方案2】:

    我认为那是一个异步任务,所以......在 doInBackground 中你必须执行以下操作:

    protected void doInBackground(String... params) {
            .
            .
            .
            //your code
            Bitmap image = something;
    
            return image;
         }
    

    确保“图像”设置了一个值

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-29
      相关资源
      最近更新 更多