我想做的是:获取ImageView的src的ID,将其与两个可绘制对象的ID进行比较,然后使用AsyncTask交换它们(只是因为我想了解它的工作原理)。
我在这里读过类似的问题,到目前为止,这是我得到的:
public class Main extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ImageView image = (ImageView) findViewById(R.id.img);
Integer integer = (Integer) image.getTag();
}
private class cambiarImagen extends AsyncTask<Integer, Integer, Integer> {
protected void onPreExecute() {
ImageView image = (ImageView) findViewById(R.id.img);
Integer integer = (Integer) image.getTag();
int img1 = R.drawable.zapato;
int img2 = R.drawable.zapatod;
}
@Override
protected Integer doInBackground(Integer... values) {
// parte logica
int num = values[0];
int zapato = values[1];
int zapatod = values[2];
if (num == zapato) {
num = zapatod;
} else if (num == zapatod) {
num = zapato;
}
return num;
}
protected Void onPostExecute(Integer... values) {
int num = values[0];
ImageView image = (ImageView) findViewById(R.id.img);
image.setTag(num);
return null;
}
}
当然这行不通。
1.我不明白如何获取ImageView作为其src的可绘制对象的ID。
2.我不明白如何在AsyncTask中传递参数; onPreExecute应该接收UI内容,doInbackground应该接收它以进行比较并返回应设置为ImageView的drawable int,onPreExecute应该将其设置为ImageView。
最佳答案
我不明白如何获取ImageView作为其src的可绘制对象的ID。
我不必这样做,因此可能无法正常工作,但您应该可以使用
imageView.getDrawable().getId();
我不明白如何在AsyncTask中传递参数;
您在
task.execute()
中传递的所有内容都会被doInBackground()
接收。如果调用publishProgress()
,则无论发送什么参数,onProgressUpdate()
都会收到。 doInBackground()
返回的数据由onPostExecute()
接收。就是说,您不需要
AsyncTask
,但是我知道您说过您想学习如何使用它。除了这两件事之外,我对您具体遇到的问题还是有些困惑,所以请详细说明一下。ImageView Docs
AsyncTask Docs
AsyncTask Example(如果有帮助的话)