Java 如何在AsyncTask中传递两个参数?

Java 如何在AsyncTask中传递两个参数?,java,android,mvvm,android-asynctask,android-livedata,Java,Android,Mvvm,Android Asynctask,Android Livedata,我使用的是MVVM结构,我在Dao中的查询如下所示: @Query("SELECT * FROM Sorted WHERE date LIKE :date AND categoryChart = :category") LiveData<List<Sorted>> getSortedDiagramData(String date, String category); @Query(“从排序的日期中选择*,如:date和categoryChart=:category”)

我使用的是MVVM结构,我在Dao中的查询如下所示:

@Query("SELECT * FROM Sorted WHERE date LIKE :date AND categoryChart = :category")
LiveData<List<Sorted>> getSortedDiagramData(String date, String category);
@Query(“从排序的日期中选择*,如:date和categoryChart=:category”)
LiveData getSortedDiagramData(字符串日期、字符串类别);
在存储库中,我需要在AsyncTask中执行此方法,但我不知道如何执行

我所尝试的:

 public LiveData<List<Sorted>> getSortedDiagramData(String date, String category){
    String[] array = new String[2];
    array[0] = date;
    array[1] = category;
    return new GetSortedDiagramDataAsyncTask(sortedDao).execute(array);
}
public LiveData getSortedDiagramData(字符串日期,字符串类别){
字符串[]数组=新字符串[2];
数组[0]=日期;
数组[1]=类别;
返回新的GetSortedDiagramDataAsyncTask(sortedDao)。执行(数组);
}
然后:

 private static class GetSortedDiagramDataAsyncTask extends AsyncTask<String[], Void, LiveData<List<Sorted>>> {
    private SortedDao sortedDao;
    private GetSortedDiagramDataAsyncTask(SortedDao sortedDao){
        this.sortedDao = sortedDao;
    }
    @Override
    protected LiveData<List<Sorted>> doInBackground(String[] ... strings) {
        String date1 = String.valueOf(strings[0]);
        String category1 = String.valueOf(strings[1]);
        LiveData<List<Sorted>> list = sortedDao.getSortedDiagramData(date1, category1);
        return list;
    }
}
私有静态类GetSortedDiagramDataAsyncTask扩展了AsyncTask{
私人分拣口分拣口分拣口;
专用GetSortedDiagramDataAsyncTask(SortedDao SortedDao){
this.sortedDao=sortedDao;
}
@凌驾
受保护的LiveData doInBackground(字符串[]…字符串){
String date1=String.valueOf(strings[0]);
String category1=String.valueOf(strings[1]);
LiveData list=sortedDao.getSortedDiagramData(日期1,类别1);
退货清单;
}
}
但是当我将“array”传递给execute()时,出现了一个错误“compatibletypes”


你能建议我如何解决这个问题吗?谢谢您的帮助。

您可以在构造函数中传递它:

private String date, category;
private SortedDao sortedDao;
public GetSortedDiagramDataAsyncTask(SortedDao sortedDao, String date, String category) {
    this.date = date;
    this.category = category;
    this.sortedDao = sortedDao;
}

@Override
protected LiveData<List<Sorted>> doInBackground(String[]... strings) {
    LiveData<List<Sorted>> list = sortedDao.getSortedDiagramData(date, category);
    return list;
}

您可以在构造函数中传递它:

private String date, category;
private SortedDao sortedDao;
public GetSortedDiagramDataAsyncTask(SortedDao sortedDao, String date, String category) {
    this.date = date;
    this.category = category;
    this.sortedDao = sortedDao;
}

@Override
protected LiveData<List<Sorted>> doInBackground(String[]... strings) {
    LiveData<List<Sorted>> list = sortedDao.getSortedDiagramData(date, category);
    return list;
}

另一种方法是:

GetSortedDiagramDataAsyncTask(sortedDao).execute(date,category);

另一种方法是:

GetSortedDiagramDataAsyncTask(sortedDao).execute(date,category);

在构造函数中传递参数。你能举个例子吗?你已经有了一个例子。这是你的问题
GetSortedDiagramDataAsyncTask
有一个构造函数:
GetSortedDiagramDataAsyncTask(SortedDao-SortedDao)
。您可以向其中添加其他参数,并以存储
sortedDao
的方式将其存储在字段中。但是请注意,
AsyncTask
已被弃用。请在构造函数中传递参数。是否可以给出一个示例?您已经有了一个示例。这是你的问题
GetSortedDiagramDataAsyncTask
有一个构造函数:
GetSortedDiagramDataAsyncTask(SortedDao-SortedDao)
。您可以向其中添加其他参数,并以存储
sortedDao
的方式将其存储在字段中。但是请注意,
AsyncTask
已被弃用。