在我的应用程序中,活动B从活动A启动。当活动B完成(应用程序返回到活动A)时,应用程序在onActivityResult()内运行功能C,这非常有效。
现在,我在Activity A中添加一个ProgressBar来指示Function C正在运行。在运行Function C之前,我将ProgressBar的可见性设置为View.VISIBLE,并在功能C完成时将其设置回View.INVISIBLE。
我的程序结构是:
private ProgressBar mProgressBar;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
mProgressBar = (ProgressBar) findViewById(R.id.progressbar);
mProgressBar.setVisibility(View.INVISIBLE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
mProgressBar.setVisibility(View.VISIBLE);
if ((requestCode == REQUEST_CODE) && (resultCode == RESULT_OK)) {
functionC();
}
mProgressBar.setVisibility(View.INVISIBLE);
}
但是,它不起作用:当Function C仍像以前一样运行时,ProgressBar永远不会出现。
我想知道我们是否被允许在onActivityResult()中操纵UI。如果没有,是否有解决方法?
任何解决此问题的建议都将受到赞赏。
功能C:
firebase.authWithPassword(mLoginEmail, mPattern, new Firebase.AuthResultHandler() {
@Override
public void onAuthenticated(AuthData authData) {
handleAuthenticated();
}
@Override
public void onAuthenticationError(FirebaseError firebaseError) {
showErrorDialog(firebaseError.toString());
}
});
不确定功能C是否对ProgressBar的可见性有任何影响。
答案 0 :(得分:0)
尝试这样,
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if ((requestCode == REQUEST_CODE) && (resultCode == RESULT_OK)) {
((ProgressBar) findViewById(R.id.progressbar)).setVisibility(View.VISIBLE);
functionC();
}
}
并在函数()中,
((ProgressBar) findViewById(R.id.progressbar)).setVisibility(View.INVISIBLE);
希望它会帮助你
答案 1 :(得分:0)
你无法达到进度条的感觉,直到你从网上取物或你的功能需要2 3秒才能完成大量操作
作为一个黑客,你可以有一个2 3秒的计时器,并启用和禁用进度条,如果你这样膝盖显示
答案 2 :(得分:0)
我在onActivityResult
中遇到同样的问题,我将mProgressBar.setVisibility(View.VISIBLE
)放在Handler
中,它完美地运作
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
new Handler().post(new Runnable() {
@Override
public void run() {
mProgressBar.setVisibility(View.VISIBLE);
}
});
if ((requestCode == REQUEST_CODE) && (resultCode == RESULT_OK)) {
functionC();
}
}