Java android将字符串数组和字符串传递给asyncTask
我想将字符串数组和字符串变量传递给AsyncTask类。我对android应用程序编程还不熟悉,所以这可能不是实现我目标的最有效的方式。无论如何,我有一个名为separate[]的字符串数组和String selected 在单独的[]中,我从EditText视图加载了值,在selected中,有一个来自微调器的值。现在我想在异步任务中使用这些。我的AsyncTask类现在如下所示:Java android将字符串数组和字符串传递给asyncTask,java,android,parameters,android-asynctask,Java,Android,Parameters,Android Asynctask,我想将字符串数组和字符串变量传递给AsyncTask类。我对android应用程序编程还不熟悉,所以这可能不是实现我目标的最有效的方式。无论如何,我有一个名为separate[]的字符串数组和String selected 在单独的[]中,我从EditText视图加载了值,在selected中,有一个来自微调器的值。现在我想在异步任务中使用这些。我的AsyncTask类现在如下所示: final class cyklus extends AsyncTask<String[], Void,
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;
}
}
final类cyklus扩展异步任务{
字符串[]音调={“C”、“Cis”、“D”、“Dis”、“E”、“F”、“Fis”、“G”、“Gis”、“A”、“Ais”、“B”};
字符串[]结果;
@凌驾
受保护的字符串[]doInBackground(字符串[]…参数){
int l=params.length;//分隔符的长度[]
对于(int k=0;k==l;k++){//查找元素匹配的索引,将[k]分隔为音调[]
//输入位置
inti=Arrays.asList(tones.indexOf(params[k]);
//结果指标
int j=Integer.parseInt(选中);
int指数=i+j;
//结果
字符串res=音调[索引];
结果[k]=res;
}
返回结果;
}
}
完成此for循环后,我希望AsyncTask返回结果[]。总之,我想知道如何在AsyncTask类中使用“separate[]”和“selected”。多谢各位
编辑:还有一个子问题。我的for循环无法启动。为什么?谢谢。像这样创建一个异步任务构造函数
public class Blah extends AsyncTask<... , ... , ...>
{
String one;
String[] two;
public Blah(String one, String[] two)
{
this.one = one;
this.two = two;
}
onPreExe.....
doInBack....
onPostExe....
}
公共类Blah扩展异步任务
{
第一串;
字符串[]2;
公共废话(字符串一,字符串[]二)
{
这个1=1;
这个2=2;
}
onPreExe。。。。。
多恩巴克。。。。
onPostExe。。。。
}
来自活动Blah b=new Blah(“abc”,新字符串[]{“a”、“b”、“c”};
b.execute(…);
编写一个构造函数并使用它传递值
public cyklus(Context context,String[] tones){
this.context = context;
this.tones = tones;
}
我不知道从哪里选择了值
// RESULT INDEX
int j =Integer.parseInt(selected);
但是您可以通过添加onPostExecute()来设置这样的结果
final类cyklus扩展异步任务{
字符串[]音调={“C”、“Cis”、“D”、“Dis”、“E”、“F”、“Fis”、“G”、“Gis”,
“A”、“Ais”、“B”};
字符串[]结果;
@凌驾
受保护的字符串[]doInBackground(字符串[]…参数){
int l=params.length;//分隔符的长度[]
对于(int k=0;k==l;k++){//查找
//元素以音调[]分隔[k]
//输入位置
inti=Arrays.asList(tones.indexOf(params[k]);
//结果指标
int j=Integer.parseInt(选中);
int指数=i+j;
//结果
字符串res=音调[索引];
结果[k]=res;
}
返回结果;
}
@凌驾
受保护的void onPostExecute(字符串[]结果)
{
super.onPostExecute(结果);
//将结果数组设置为您想要的对象
}
}
将方法更改为:全局定义
String[] tones = {"C","Cis","D","Dis","E","F","Fis","G","Gis","A","Ais","B"};
现在,按如下方式调用异步任务:
new cyklus().execute(tones);
现在,更改异步任务实现
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);
}
公共类cyklus扩展异步任务{
进程对话;
@凌驾
受保护的void onPreExecute(){
dialog=新建进度对话框(上下文);
对话框.setTitle(“计算…”);
setMessage(“请稍候…”);
对话框。setUndeterminate(true);
dialog.show();
}
受保护的字符串[]doInBackground(字符串[]…正在传递){
字符串[]结果=新字符串[10];
字符串[]传递=传递[0];//获取传递数组
//一些计算。。。
返回结果;//返回结果
}
受保护的void onPostExecute(字符串[]结果){
dialog.dismise();
字符串最小值=result.get(0);
}
这就是实现AsyncTask的方法。希望这对您有所帮助。谢谢,但我认为我们彼此不了解:)。我不需要传入tones[]我需要传入一个字符串变量:string selected和string[]separate,其中在string selected中,有来自微调器和string[]的值separate,我的EditText中有一些值。选择的字符串在我的onCreate方法中声明。我如何做?@user2886091所以你想传递一个字符串值,好的,你想从AsyncTask返回什么?我想同时传递String[]separate和String selected。我想让我的AsyncTask返回String[]结果。创建一个带有两个参数的AsyncTask构造函数。查看下面的@ohntheripp3r Answer这是我要问的问题。选择的字符串在我的onCreate方法中声明,在这个变量中,有来自微调器的值。所以我需要传入选择的字符串和分开的字符串[]。你能帮助我吗?
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);
}