java - 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);
}
}
解决方案
活动的 onCreate() 中缺少 setContentView(R.layout.______)。因此,您将永远无法访问 UI。请在活动中添加并检查
推荐阅读
- ios - iOS 中图像的 ListBox 或 DropDown 或 Spinner
- python - Python的multiprocessing.Pool进程全局作用域问题
- java - Neo4j 无法在新的 Ubuntu 18 桌面上构建
- jquery - 如何在 3 秒内更改 href 链接?
- c++ - 与子构造函数同名的继承类成员
- java - 如何将 int 放入 HashMap jni?
- conditional-statements - 如何根据 OPL 中的其他决策变量将 0 和 1 分配给决策变量
- flutter - Flutter in_app_purchase queryPastPurchases() 在 iOS 上返回空列表
- c++ - C++ 测量显示字符串宽度(替代 c# TextRenderer.MeasureText)
- c# - 使用 DelegatingHandler 实现 HTTP 请求重试逻辑