【发布时间】:2014-09-22 21:16:31
【问题描述】:
我正在尝试在运行异步任务时设置两个线性布局的可见性。这是我的代码:
private LinearLayout mProgress;
private LinearLayout mList;
mProgress.setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener() {
@Override
public void onSystemUiVisibilityChange(int visibility) {
mList.setVisibility((mProgress.getVisibility() == View.VISIBLE ? View.INVISIBLE : View.VISIBLE));
}
});
//When I run asynctask
@Override
protected void onPreExecute() {
super.onPreExecute();
mProgress.setVisibility(View.VISIBLE);
}
@Override
protected void onPostExecute() {
mProgress.setVisibility(View.GONE);
}
按照权利,这应该将 mProgress 设置为一直可见,直到 onPostExecute。从那里,我将可见性设置为 GONE,这应该使我的其他线性布局可见正确吗?但是,当我运行它时,mProgress 永远不会从 onPreExecute 设置为 VISIBLE,并且当 Visibility 更改时,mList 永远不会设置为 VISIBLE。知道我做错了什么吗?
【问题讨论】:
-
在没有处理程序的情况下不能从外部线程与 ui 交互(异步任务不直接实现)
-
这样做你想达到什么目的?保持您的代码简单,对于您的问题,还有其他方法可以更好地处理相同的事情
标签: android android-layout android-asynctask visibility