【问题标题】:How to call a loading spinner within a class如何在类中调用加载微调器
【发布时间】:2015-03-26 04:34:49
【问题描述】:

我正在尝试从一个类中加载一个“加载微调器”,我想知道实现这一目标的最佳方法是什么。在我的课堂上有一个异步任务,我希望微调器开始和完成。我已经在布局中创建了加载微调器,现在我想要做的是在异步任务完成时显示微调器。

这是我的课:

public class ClusterManager extends ClusterManager {

public ClusterManager() {
    super();        
}

private void reload() {

    new AsyncTask<Void, Void, Void>()
    {
        @Override
        protected Void doInBackground(Void... params)
        {
            //Start spinner here
        }

        @Override
        protected void onPostExecute(Void aVoid)
        {
            //Stop/Remove the spinner
        }
    }.execute();

}

还有我的自定义微调器

<?xml version="1.0" encoding="utf-8"?>
<ProgressBar
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/LoadingSpinner"
android:layout_width="match_parent"
android:layout_height="match_parent"
style="?android:attr/progressBarStyleLarge"
android:layout_centerHorizontal="true">

</ProgressBar>

【问题讨论】:

    标签: android android-asynctask progress-bar


    【解决方案1】:

    我认为你可以在类的构造函数中加载一个 ProgressDialog 并在两个回调中显示或隐藏它。

    另一种选择是从活动或片段中传递一个侦听器,并通知何时显示或隐藏。通过这种方式,您可以在布局中使用进度条。

    【讨论】:

    • 是的,但在我的情况下,我使用的是微调器而不是进度对话框。我只是显示一个旋转的圆圈,但我不知道如何加载它:/
    • 在 doInBackground 中,您无论如何都无法显示微调器,因为您无法触摸 ui,因此您必须在预执行时使用。也就是说,无法从 AsyncTask 加载视图,您应该在构造函数中传递视图或使用侦听器。
    • 如果我在类中膨胀微调器的布局并在 omPostExcute 中关闭它会怎样。
    • 你应该将上下文传递给任务
    猜你喜欢
    • 2023-03-25
    • 1970-01-01
    • 2023-03-18
    • 2010-09-09
    • 2021-12-05
    • 2012-10-28
    • 1970-01-01
    • 1970-01-01
    • 2016-10-22
    相关资源
    最近更新 更多