这是活动中进度栏的部分:
<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);
}
}
答案 0 :(得分:0)
我的建议是,首先,您需要调用waitForCommandSender();。方法,然后您需要启动线程
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:
//call the method first and start thread next
waitForCommandSender();
myCommandSender.start()
} catch (JSONException e) {
e.printStackTrace();
}
}
}
答案 1 :(得分:0)
setContentView(R.layout .______)。因此,您将永远无法使用UI。请在活动中添加并检查