私がやりたいこと: ImageView の src の ID を取得し、それを 2 つのドローアブルの 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 に設定する必要がある描画可能な int を返す必要があり、onPreExecute はそれを ImageView に設定する必要があります。