如何在异步任务后从CustomView访问UI元素

时间:2014-01-19 14:59:03

标签: android android-fragments android-asynctask

我的Fragment包含progress bar(当前可见性已消失),button和空LinearLayout容器。像:

<LinearLayout id="@+id/ll"> </LinearLayout>

功能如此,在按钮点击时会执行async task。 在postExecute()上,自定义视图在空布局容器ll中膨胀。此自定义视图在单独的类中定义。像:

class CustomLayout extends LinearLayout{
    Button b1;
}

在此布局中,有一个按钮,可以启动另一个async task (say, AS2)。 现在,在AS2的postExecute()上,我想提升进度条VISIBLE的可见性。

那么,如何在AS2中访问Fragment的元素?

PS - 我通过减少要访问的视图元素的数量来简化问题。我试图避免首先在AS1&amp;中传递视图元素从那里到AS2。

谢谢

1 个答案:

答案 0 :(得分:1)

如果您在全局范围内有AS1AS2作为内部类(假设为MainActivity),那么只需将自定义视图创建为MainActivity的类成员即可。然后,您就可以直接在AS2内访问它们,而无需先通过AS1传递它们。

但是如果你在不同的类中有AS1 et AS2,那么为每个类创建一个自定义构造函数,并将自定义视图作为构造函数的参数。在这种情况下,您必须将AS1 postExecute()方法的观点传递给AS2。这并不奇怪,因为AS2依赖于AS1的执行。