java - 无法从异步任务调用第二个 Activity

标签 java android android-asynctask

我需要从 ASyncTask 的 onPostExecute() 方法调用新 Activity ,但上下文返回 null。

public class ImageDownloadTask extends AsyncTask<String,Void,ArrayList<String>> {


public final String search = "https://www.google.co.in/search?&tbm=isch&q=";
public final String searchAlbum = "album+art";
ArrayList<String> arrayList=new ArrayList<String>();
ArrayList<String> urlList=new ArrayList<String>();
Context context;
@Override
protected void onPreExecute() {
    super.onPreExecute();
}

@Override
protected ArrayList<String> doInBackground(String... urls) {
    System.out.println(urls.length);

    arrayList.clear();
    urlList.clear();

    for(int i=0;i<urls.length;i++) {
        String url = urls[i];
        String finalUrl = search + url + searchAlbum;

        try {
            //Log.i("URL", finalUrl);
            urlList.add(finalUrl);

            Document document = Jsoup.connect(finalUrl).get();

            String result = document.toString();

            //Pattern pattern = Pattern.compile("<img class=\"rg_ic rg_i\" data-src=\"(.*?)\" data-sz");

            Pattern newPattern = Pattern.compile("\"ou\":\"(.*?)\",\"ow\"");

            //Matcher m = pattern.matcher(result);

            Matcher newMatcher = newPattern.matcher(result);

            if(newMatcher.find())
                arrayList.add(newMatcher.group(1));

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    System.out.println("Printing Images");
    System.out.println(urlList);
    System.out.println(arrayList);

    return arrayList;
}

@Override
protected void onPostExecute(ArrayList<String> strings) {
    if(context!=null) {
    Intent i = new Intent(context,MusicPlayerActivity.class).putExtra("arrayImages",arrayList);
    context.startActivity(i);}
    else
        Log.i("Context","NULL"); //Check why it is null*****
    super.onPostExecute(strings);
  }
}

输出为 Context:NULL。

为什么是null,我试过做一个MainActivity和Activity类型的变量,但是都没有解决问题。

感谢您的宝贵时间。

最佳答案

您声明了您的 context 变量但从未设置它:

Context context;

是的,当您尝试使用它时,它是 null

您应该在尝试使用它之前填充它 - 也许将引用传递给调用 Activity 或类似的。

关于java - 无法从异步任务调用第二个 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43476488/

相关文章:

java - 做 |和 & 在 Java 中有意义吗?

java - 如何从两个表中选择同一字段中具有相同值的行?

java - 删除记录器名称的前 X 部分

Android 发布崩溃并出现异常 net.sqlcipher.database.SQLiteException

Android:下载大文件

java - 可运行代码正在循环其操作

c# - C#和Java的Base64区别

java - 工具栏覆盖状态栏

android - Robolectric 3.3 与 Theme.AppCompat

android - Realm.io 和异步查询