首页 > 解决方案 > Android 应用程序在显示 ProgressBar 时出现问题

问题描述

这是活动中进度条的部分:

<ProgressBar
    android:id="@+id/progressBarLogin"
    android:indeterminate="true"
    android:layout_centerInParent="true"
    style="?android:attr/progressBarStyle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="8dp"
    android:layout_marginEnd="8dp"
    android:layout_marginStart="8dp"
    android:layout_marginTop="8dp"
    app:layout_constraintBottom_toTopOf="@+id/editText_password"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

这是 OnCreate 的代码:

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    myProgressBar = findViewById(R.id.progressBarLogin);
    myProgressBar.setVisibility(View.GONE); 
    // progress bar is hidden (yay!)
    // other stuff goes here
 }

这是按钮回调的代码:

    final Button loginButton = findViewById(R.id.buttonLogin);
    loginButton.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            // login button was clicked
            try {
                // myCommandSender is a thread:
                myCommandSender.start()        
                waitForCommandSender();
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    }

这是该线程中等待 myCommandSender 完成的代码:

    private void waitForCommandSender() {
    myProgressBar.setVisibility(View.VISIBLE);
    while (myCommandSender.isAlive()) {
        try {
            Thread.sleep(100);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        myProgressBar.setVisibility(View.GONE);
    }
}

标签: javaandroidandroid-layoutandroid-studio

解决方案


活动的 onCreate() 中缺少 setContentView(R.layout.______)。因此,您将永远无法访问 UI。请在活动中添加并检查


推荐阅读