1

在 Android 中使用 facebook 登录/注册时,facebook 发送请求需要一段时间。因此,我如何暂停活动(显示进程对话框),直到我获得尝试注册的用户的 facebook id/用户名?我不能在基本侦听器中执行此操作,因为它是一个后台进程。

我尝试使用 AsyncTask,但我要么对如何做感到困惑,要么无法做到。主要是前者。我这样做了:

  public class FacebookOperation extends AsyncTask<Void, Void, Void>
        {  





        @Override
        protected void onPreExecute()
        {  
            super.onPreExecute();



                mFacebook = new Facebook(APP_ID);
                mAsyncRunner = new AsyncFacebookRunner(mFacebook);
                reg = "facebook";
                SessionStore.restore(mFacebook, Register.this);
                SessionEvents.addAuthListener(new SampleAuthListener());
                //SessionEvents.addLogoutListener(new SampleLogoutListener());

        } 
        @Override 
        protected void onProgressUpdate(Void... values) {
            super.onProgressUpdate(values);

         }

        @Override 
        protected void onPostExecute(Void result)

        { 


               fillFormFb(); //Fills the form with the data from fb
        }

        @Override
        protected Void doInBackground(Void... params) {
            mLoginButton.init(Register.this, mFacebook,permissions);


            return null;
        }

          }
4

1 回答 1

4

使用 AsyncTask 在后台运行您的进程。您可以在加载操作时显示进度条。

public class FacebookOperation extends AsyncTask<Void, Void, Void>
{  
@Override
protected void onPreExecute()
{  
    super.onPreExecute();
    dialog.setMessage("Please wait...");
    dialog.setCancelable(false);
    dialog.show();

} 
@Override 
protected void onProgressUpdate(Void... values) {
    super.onProgressUpdate(values);
    // Things to be done while execution of long running operation is in progress. For example updating ProgessDialog
 }

@Override 
protected void onPostExecute(Void result)

{ 
      //Post Execute
       dialog.cancel();
}
@Override
protected Void doInBackground(Void... params) {

  // Your operation..Dont Edit Any Views here

    return null;
}

}

编辑

我认为您可以按照链接将 facebook 与您的应用程序集成。这将对您有所帮助。

希望能帮助到你

于 2012-07-21T08:37:12.040 回答