我正在尝试执行另一项活动的任务时显示ProgressDialog
。我尝试了威胁,威胁和所有发现的东西,但没有任何帮助。
我只能做到用吐司来做
@Override
public void onClick(View view) {
user = new User(strLogin, strPwd);
if (globalVariable.getDB().isValidUser(user, globalVariable)) {
Toast.makeText(context, "Login ok", Toast.LENGTH_LONG).show();
globalVariable.setUserLogged(true);
globalVariable.setUser(user);
startActivity(new Intent(MainActivity.this, MainMenu.class));
} else {
if(!globalVariable.getAuthorizedUser()) {
Toast.makeText(context, "Login not allowed", Toast.LENGTH_LONG).show();
}
else {
Toast.makeText(context, "Login failed", Toast.LENGTH_LONG).show();
}
}
}
我要显示的是ProgressDialog
而不是Toasts
。
问题似乎在于方法isValidUser
在另一个活动中,因此直到任务结束才显示对话框。
我再说一遍,我曾尝试将其放入runOnUiThread
,但没有窍门。
有什么建议吗?谢谢!
答案 0 :(得分:0)
我的建议是尝试以下方法。
1)
答案 1 :(得分:0)
我假设globalVariable
是验证用户的活动。我建议使globalVariable成为实用程序Java类,而不是具有上下文的活动。您可以让您的活动/类实现一个接口,该接口将具有可在您的应用中的任何地方使用的通用方法,例如显示对话框,敬酒等。让我们创建一个名为BaseBehavior
的示例。
public interface BaseBehavior {
void showProgress();
void hideProgress();
}
让globalVariable
实现上述接口
public class GlobalVariable extends Activity implements BaseBehavior{
@Override
public void showProgress(){
// implement code to reveal progress dialog
}
@Override
public void hideProgress(){
// implement code to hide progress dialog
}
}
现在在您的代码中,所有实现该行为的类都可以直接调用globalvariable.showProgress()
。我们也可以有一个实现BaseBehavior及其方法的ParentActivity,我们可以在任何地方调用它。
另一种选择是对globalVariable类使用AsyncTask。
public class GlobalVariable extends Activity {
// code
public void start(){
new AsyncTaskRunner.execute()
}
private class AsyncTaskRunner extends AsyncTask<User, String, String> {
private String resp;
ProgressDialog progressDialog;
@Override
protected String doInBackground(User... users) {
// validateUser(user[0]);
}
@Override
protected void onPostExecute(String result) {
// showProgressDialog();
}
@Override
protected void onPreExecute() {
// hideProgressDialog();
}
@Override
protected void onProgressUpdate(String... text) {
// End sequence
}
}
}
我希望这些选项可以帮助您实现所需的目标。 :)