我试过了,但是在调用 postexecute 方法后我收到了 WindowLeaked 错误消息。
这是我的代码:
Request meRequest=Request.newMeRequest(session, new GraphUserCallback()
{
@Override
public void onCompleted(GraphUser user, Response response)
{
if(response.getError()==null)
{
try
{
MyAsyncTask async = new MyAsyncTask ();
async.execute("fbsignup");
} catch (Exception e)
{
Log.v("FB error:::::::::", e.getMessage());
}
}
}
});
meRequest.executeAsync();
这是 MyAsyncTask 类,当我尝试在不使用 asynctask 的情况下调用 Intent 时,它工作正常,所以我猜我的错误仅在 asynctask 中。
private class MyAsyncTask extends AsyncTask<String, Void, Void> {
private ProgressDialog pDialog = null;
private String responseFromServer = null;
private boolean hasExceptionOccured = false;
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(getActivity());
pDialog.setMessage("Please wait..");
pDialog.setCancelable(false);
pDialog.show();
}
@Override
protected Void doInBackground(String... params) {
try
{
// Parse graph user data and check whether user has registered or not.
// If user is not registered mandatory password popup.
ServiceHandler handler = new ServiceHandler();
List<NameValuePair> parameters = new ArrayList<NameValuePair>();
if(params[0].equalsIgnoreCase("fbsignup"))
{
parameters.add(new BasicNameValuePair("email", UserEmailID));
responseFromServer = handler.makeServiceCall(URL, 2, parameters);
}
} catch (Exception e)
{
Log.v("CLassName::::::SignupwithEmail:::::::AsyncTask", e.getMessage());
hasExceptionOccured = true;
}
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
if (pDialog!=null)
{
pDialog.dismiss();
}
try
{
if(responseFromServer.contains("success"))
{
Intent i = new Intent(getActivity(), HomePage.class);
getActivity().startActivity(i);
getActivity().finish();
}
} catch (Exception e)
{
Log.v("Main FRagment FB async::::::", e.getMessage());
}
}
}