我想要做的:获取 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的drawable的id。 2.我不明白AsyncTask中的参数是如何传递的; onPreExecute 应该接收 UI 内容,doInbackground 应该接收它以进行比较并返回应该设置为 ImageView 的可绘制 int,onPreExecute 应该将其设置为 ImageView。
最佳答案
I don't understand how to get the id of the drawable that ImageView has as its src.
我没有这样做,所以可能不起作用,但你应该能够使用
imageView.getDrawable().getId();
I don't understand how the params are passed in AsyncTask;
无论您在 task.execute()
中传递什么内容,都会由 doInBackground()
接收。如果您调用publishProgress()
,那么发送到那里的任何参数都会被onProgressUpdate()
接收。 doInBackground()
中返回的数据由onPostExecute()
接收。
AsyncTask
,只是让你知道,这不需要,但我知道你说过你想学习如何使用它。除了这两件事之外,我对您具体遇到的问题有点困惑,所以如果我错过了什么,请详细说明。
AsyncTask Example (如果有帮助的话)
关于java - 获取 ImageView 可绘制 ID 并使用 AsyncTask 更改它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19031023/