0

我正在开发一个 Android 应用程序,但在更新 GUI 时遇到了问题。基本上我想要实现的是当我的用户单击登录按钮时,调用 groupLogInProgress 上的 setVisibility 方法,如下定义并将其设置为 View.VISIBILE。然后启动我的登录方法,如果它返回成功值,则将 groupLogInProgress 设置为 View.GONE,并将 groupLogInSuccess 设置为 View.VISIBLE(显示“登录成功!”)暂停几秒钟并启动我的主要意图。如果我的登录方法返回 false,请将 groupLogInProgress 设置为 View.GONE,将 groupLogInError 设置为 View.VISIBLE。我似乎无法弄清楚如何在不导致我的应用程序在等待登录方法完成时挂起的情况下使这些事情发生。

以下是我到目前为止所拥有的,非常感谢任何帮助!

//Hide all Sign In progress/success/error layouts onCreate
groupLogInProgress = (LinearLayout) findViewById(R.id.groupLoginProgress);
groupLogInSuccess = (LinearLayout) findViewById(R.id.groupLoginSuccess);
groupLogInError = (LinearLayout) findViewById(R.id.groupLoginError);        
hideAllStatus(); //this is simple method that sets all above groups to View.GONE

//Sign in button onClick handler
public void onClick(View v) { 
    loginData = LogInUser(username, password);
if(loginData == null)
{
    //set groupLogInError to View.VISIBLE, all others to GONE
}
else
{       
        //set groupLogInSuccess to View.VISIBLE, all others to GONE and pause for a few seconds to allow user to see "Sign In Successful!" message
    }
}    
4

1 回答 1

0

定义一个 AsyncTask:

private class LoginTask extends AsyncTask<Void, Integer, Integer>
{
 static final int STATUS_SUCCESS = 1;
 static final int STATUS_FAIL = 0;

 @Override
 protected void onPreExecute()
 {
  hideAllStatus(); //this is simple method that sets all above groups to View.GONE
 }

 @Override
 protected Integer doInBackground(Void... params) 
 {
  loginData = LogInUser(username, password);
  return (loginData == null ? STATUS_FAIL : STATUS_SUCCESS);
 }

 @Override
 protected void onPostExecute(Integer result)
 {
  if (result == STATUS_FAIL)
  {
    //set groupLogInError to View.VISIBLE, all others to GONE
  }
  else
  {       
    //set groupLogInSuccess to View.VISIBLE, all others to GONE and pause for a few seconds to allow user to see "Sign In Successful!" message
  }

 }
}

执行任务:

new LoginTask().execute();

我已经忽略了一些细节,但是这个类需要访问 loginData、你的 View 变量等,所以它可能是你 Activity 中的一个私有类。留给您的一些细节,例如传递结果等

于 2013-05-02T17:12:01.797 回答