在onCreateView()之后调用一个方法来改变ui?

时间:2016-03-28 23:42:16

标签: java android progress-bar

在OnCreateView或OnCreate中返回视图后,是否可以调用将更改ui的方法?我想显示一个进度视图并隐藏一个列表视图,直到某个内容完成从另一个活动的异步任务中加载。但是每当我用这段代码打开片段时:

boolean doneOnce = false;
    do {
        if(!doneOnce) {
            showProg(true);
            doneOnce = true;
        }
    }while (Values.courses == null);

通过导航菜单冻结然后弹出,因为在OnCreateView返回膨胀的视图之前调用它。任何解决方案?

1 个答案:

答案 0 :(得分:0)

这样的循环会阻止UI。如何使用Runnable,您的任务后跟所需的可见性更改?类似的东西:

class MyRunnable implements Runnable {
    @Override
    public void run() {
        //perform your task here
        something.setVisibility(View.VISIBLE);
    }
}

通过以下方式发布此可运行文件:

private android.os.Handler mHandler= new android.os.Handler();
mHandler.post(new MyRunnable());

编辑:也许您仍然可以使用runnable,但是可以使用主要活动。

boolean doneOnce = false;

class MyRunnable implements Runnable {
    @Override
    public void run() {
        if(!doneOnce) {
            showProg(true);
            doneOnce = true;
        }
        if (Values.courses == null) {
            mHandler.postdelayed(this, 100);  //or mHandler.post(this);
        }
    }
}