我尝试了这个,但是在调用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());
}
}
}
答案 0 :(得分:1)
用户
Session session = Session.getActiveSession();
requestMyAppFacebookFriends(session);
private List<GraphUser> getResults(Response response) {
GraphMultiResult multiResult = response
.getGraphObjectAs(GraphMultiResult.class);
GraphObjectList<GraphObject> data = multiResult.getData();
return data.castToListOf(GraphUser.class);
}
private void requestMyAppFacebookFriends(Session session) {
Request friendsRequest = createRequest(session);
friendsRequest.setCallback(new Request.Callback() {
@Override
public void onCompleted(Response response) {
//List<GraphUser> friends = getResults(response);
//Log.e("RESULT : ", "@"+friends.size());
// TODO: your code here
}
});
friendsRequest.executeAsync();
}
private Request createRequest(Session session) {
Request request = Request.newGraphPathRequest(session, "me/friends", null);
Set<String> fields = new HashSet<String>();
String[] requiredFields = new String[] { "id", "name", "picture","installed" };
fields.addAll(Arrays.asList(requiredFields));
Bundle parameters = request.getParameters();
parameters.putString("fields", TextUtils.join(",", fields));
request.setParameters(parameters);
return request;
}
答案 1 :(得分:0)
我添加了
Looper.loop();
后
async.execute("fbsignup");
这解决了我的问题。