小横 2014-12-25 08:54 采纳率: 100%
浏览 1647
已采纳

关于list产生的问题 安卓 求大神帮助啊 已经摆弄了一天了 我已经确定问题在哪 却不知道为什么

package com.wang.text;

import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
import cn.bmob.v3.Bmob;
import cn.bmob.v3.BmobQuery;
import cn.bmob.v3.datatype.BmobFile;
import cn.bmob.v3.listener.FindListener;

public class MainActivity extends Activity {
String IMAGE_URL = null;
private static final String TAG = null;
ImageView img;

List<String> list = new ArrayList<String>();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    img = (ImageView) findViewById(R.id.imageone);

    Bmob.initialize(this, "9ce1856638d44a6cefdfb67f721d0127");

    String newnew = geturl(1);
    list.add(newnew);

    Button button1 = (Button) findViewById(R.id.button1);
    button1.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            testBmob();
        }
    });

}

private String geturl(int k) {

    BmobQuery<Picture> query = new BmobQuery<Picture>();
    query.addWhereEqualTo("id", k);

    query.findObjects(this, new FindListener<Picture>() {

        @Override
        public void onError(int arg0, String arg1) {

        }

        @Override
        public void onSuccess(List<Picture> arg0) {
            Picture pics = arg0.get(0);
            BmobFile pic = pics.getPicture();
            IMAGE_URL = pic.getFileUrl(MainActivity.this);

        }

    });
    return IMAGE_URL;

}

private void testBmob() {

    String Image_dizhi = list.get(0);
    new DownloadImageTask().execute(Image_dizhi);

    /*new DownloadImageTask().execute(geturl(1));*/
    //我的问题在这   为什么直接调用函数能显示图片,通过list保存url地址然后再取出后为什么安卓应用程序就停止运行了。


}

public void toast(String msg) {
    Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
    Log.d(TAG, msg);
}

class DownloadImageTask extends AsyncTask<String, Void, Drawable> {

    @Override
    protected Drawable doInBackground(String... urls) {
        // TODO Auto-generated method stub
        return loadImageFromNetwork(urls[0]);
    }

    protected void onPostExecute(Drawable result) {

        img.setImageDrawable(result);
    }

    private Drawable loadImageFromNetwork(String imageUrl) {
        Drawable drawable = null;
        try {

            drawable = Drawable.createFromStream(
                    new URL(imageUrl).openStream(), "image.jpg");
        } catch (IOException e) {
            Log.d("test", e.getMessage());
        }
        if (drawable == null) {
            Log.d("test", "null drawable");
        } else {
            Log.d("test", "not null drawable");
        }

        return drawable;
    }
}

}

  • 写回答

2条回答 默认 最新

  • 索吻的贼 2014-12-25 09:15
    关注

    你确定你的list里面是有值的吗?query.findObjects看上去明显是个异步的函数,在你没有取得IMAGE_URL值的时候,geturl(int k)方法就已经执行到了return IMAGE_URL;这一步了,所以估计你的错误就是空指针异常了,之后之所以执行正常,是因为你开始的时候执行了String newnew = geturl(1);这个方法,导致IMAGE_URL值已经存在了,不再为空!你可以自己调试下试试。断点设置在geturl()方法里面

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。