java - 获取 ImageView 可绘制 ID 并使用 AsyncTask 更改它

标签 java android android-asynctask imageview

我想要做的:获取 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,只是让你知道,这不需要,但我知道你说过你想学习如何使用它。除了这两件事之外,我对您具体遇到的问题有点困惑,所以如果我错过了什么,请详细说明。

ImageView Docs

AsyncTask Docs

AsyncTask Example (如果有帮助的话)

关于java - 获取 ImageView 可绘制 ID 并使用 AsyncTask 更改它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19031023/

相关文章:

java - 正则表达式替换一个字符或仅替换一个重复的字符

java - 为什么我在这里得到一个 ClassCastException?

java - Android - 如何在 ConnectionTimeout 上显示 Toast

java - 我应该掌握 maven 还是开始学习 gradle

java - 使用子查询

java - 如何让 android LayoutInflater 使用我的自定义资源

c# - 延续:我可以在 F# 异步工作流或 C# 异步函数中序列化延续吗?

java - 使用java识别并分离Datagrampacke的数据包中的数据

android - 找不到 GoogleApiClient 类错误

android - 进度对话框在异步任务中给出异常