@Override
public void onClick(View view) {
Context context = view.getContext();
switch(view.getId()) {
case R.id.getGreetingButton:
Pair <Context,Integer>p=new Pair(context,1);
new RestTask().execute(p);
break;
}
}
private class RestTask extends AsyncTask<Pair<Context,Integer>, Void, Pair<Context,String>> {
@Override
protected Pair doInBackground(Pair<Context,Integer>... p) {
String text = "hello";
Pair <Context,String>result=new Pair(p.first,text);
return result;
}
@Override
protected void onPostExecute(Pair<Context,String>... p) {toaster(p.first, p.second);}
}
1) 你怎么称呼这个 ...
东西,它有什么作用?
2)为什么p.first和p.second没有被编译器找到?
3) 你什么时候使用 Pair.create(a,b)?
最佳答案
对于 1),请参阅 http://docs.oracle.com/javase/1.5.0/docs/guide/language/varargs.html - 它本质上是您在此处传递的数量可变的对。
2) 使用 p[0].first 和 p[0].second,将参数视为数组。您可以在对 execute() 的调用中传递许多对,每个对都成为传递给 doInBackground() 的数组中的一个项目
3) 您可以在对 execute() 的调用中使用它作为速记来避免创建局部变量 p,并且在 doInBackground 中您可以返回 Pair.create() 而不是创建局部结果变量。像这样的东西:
switch(view.getId()) {
case R.id.getGreetingButton:
new RestTask().execute(Pair.create(context,1));
break;
}
关于java - android.util.Pair 示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20295526/