试图将Map传递给我的AsyncTask但是我得到了一个:类型安全:为varargs参数创建Map <date,string>的通用数组</date,string>

时间:2013-11-29 12:45:27

标签: java android android-asynctask treemap

enter image description here

我正在做一些数据库操作,使用Loader,填充HashMap,然后使用这个HashMap填充TreeMap进行排序,但是当我尝试将这个TreeMap传递给我的AsyncTask时:

Sorted = new TreeMap<Date,String>(BD); 
new MagicCall().execute(Sorted); 

但是编译器给了我一个警告:类型安全:为varargs参数创建了一个通用的Map数组

这是我的AsyncTask声明:

private class MagicCall extends AsyncTask<Map<Date,String>, String, String>

任何标题?

1 个答案:

答案 0 :(得分:2)

我通过解决方法解决了这个问题。 您可以按如下方式声明任务:

private class MagicCall extends AsyncTask<Void, String, String> {

  // member
  private Map<Date,String> arg = null;

  // constructor
  public MagicCall(final Map<Date,String> arg) {
    this.arg  = arg;
  }  

  ...

  @Override
  protected String doInBackground(final Void... args) {
     // do stuff on this.arg instead of args
     ...
  }
...
}

你可以这样称呼它:

new MagicCall(Sorted).execute();

这样,您可以通过构造函数而不是通过execute()方法传递任务参数。