android将String数组和String传递给asyncTask

use*_*091 2 java parameters android android-asynctask

我想将String数组和String变量传递给我的AsyncTask类.我是编程Android应用程序的新手,所以这可能不是实现我的目标的最有效方法.无论如何,我有一个名为separate []和String的String数组被选中.

在单独的[]中,我已经从EditText View和selected中加载了值,我的微调器中有一个值.现在我想在我的AsyncTask中使用它们.我的AsyncTask类现在看起来像这样:

 final class cyklus extends AsyncTask<String[], Void, String[]>{
String[] tones = {"C","Cis","D","Dis","E","F","Fis","G","Gis","A","Ais","B"};
String[] result;

@Override
protected String[] doInBackground(String[]... params) {

    int l =params.length;  //length of separate[]

    for(int k=0; k==l; k++){   // finding indexes of matches of elements separate[k] in tones[] 

        // INPUT POSITION
                int i= Arrays.asList(tones).indexOf(params[k]);


        // RESULT INDEX
                int j =Integer.parseInt(selected);
                int index = i+j;    


        // RESULT
                String res=tones[index];
                result[k]=res;                          

}

    return result;
}
 }
Run Code Online (Sandbox Code Playgroud)

在完成for循环之后,我希望我的AsyncTask返回result [].总结一下,我想知道如何在AsyncTask类中使用"separate []"和"selected".谢谢.

编辑:再一个问题.我的循环不会开始.为什么?谢谢.

M D*_*M D 6

将您的方法更改为如下所示:全局定义

String[] tones = {"C","Cis","D","Dis","E","F","Fis","G","Gis","A","Ais","B"};
Run Code Online (Sandbox Code Playgroud)

现在,调用您的异步任务,如下所示:

new cyklus().execute(tones);
Run Code Online (Sandbox Code Playgroud)

现在,更改您的异步任务实现

public class cyklus extends AsyncTask<String[], Void, String[]> {
ProgressDialog dialog;

@Override
protected void onPreExecute() {
    dialog = new ProgressDialog(context);
    dialog.setTitle("Calculating...");
    dialog.setMessage("Please wait...");
    dialog.setIndeterminate(true);
    dialog.show();
}

protected String[] doInBackground(String[]... passing) {
    String[] result = new String[10];
    String[] passed = passing[0]; //get passed array

    //Some calculations...

    return result; //return result
}

protected void onPostExecute(String[] result) {
    dialog.dismiss();
    String minim = result.get(0);
}
Run Code Online (Sandbox Code Playgroud)

这就是你实现AsyncTask的方法.希望这对你有所帮助.