Android进度栏未出现

时间:2018-08-30 11:21:50

标签: android progress-bar

我试图通过遵循此处的一个较早问题的建议来实现异步任务,以便在方法运行时显示进度条(该方法大约需要5秒钟才能完成)

这是异步任务的实现:

public void runTask() {

        new YourAsyncTask().execute();
    }

    private class YourAsyncTask extends AsyncTask<Void, Void, Void> {
        @Override
        protected Void doInBackground(Void... args) {
            tableStatus();
            return null;
        }

        @Override
        protected void onPostExecute(Void result) {
            Loading.setVisibility(View.GONE);
            super.onPostExecute(result);
        }

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            Loading.setVisibility(View.VISIBLE);
        }
    }

表状态方法为:

public void tableStatus(){

        String tables[] = {"1", "2", "3", "4", "5", "6", "7", "8"};
        for(int i=0; i<tables.length; i++){
            availableTables(tables[i]);
        }

    }

availableTables方法是StringRequest方法。

有人对如何解决这个问题有任何建议吗?

1 个答案:

答案 0 :(得分:0)

代码对我来说似乎不错,但是如果无法正常工作,显然存在错误。

我正在使用并且可能会为您提供帮助的代码是LinearLayout内的ProgressBar和TextView,因此首先获得LinearLayout:

LinearLayout progressBarLinearLayout = (LinearLayout) findViewById(R.id.progressBar);
progressBarLinearLayout.setVisibility(View.GONE);

然后将其适应您的代码,应该是这样的:

public void runTask() {

        new YourAsyncTask().execute();
    }

    private class YourAsyncTask extends AsyncTask<Void, Void, Void> {
        @Override
        protected Void doInBackground(Void... args) {
            tableStatus();
            return null;
        }

        @Override
        protected void onPostExecute(Void result) {
            progressBarLinearLayout.setVisibility(View.GONE);
            super.onPostExecute(result);
        }

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            progressBarLinearLayout.setVisibility(View.VISIBLE);
        }
    }

我希望这也对您有用。