调用Asyncktask OnPostExecute方法的片段 [英] Call a Fragment in Asyncktask OnPostExecute method

查看:212
本文介绍了调用Asyncktask OnPostExecute方法的片段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个小问题,我有一个AsyncTask的,我从服务器的响应,如果用户被登记,将呼叫后,如果用户访问存在于另一片段,还通过在$存储p $ pferences用户的电子邮件,但我有问题,当我打电话 getFragmentManager(),可能有人帮助我吗?谢谢。这是我的code。

I have a little problem, I have a AsyncTask where I get a response from the server if the user is registered or not, would that after the call, if the user accesses exist in another fragment, also by storing in a preferences user email, however I have problem when I call getFragmentManager(), could someone help me out? Thank you. This is my code.

LoginTask.java

public class LoginTask extends AsyncTask<String, Void, User> {

public LoginTask() {

}

@Override
protected User doInBackground(String... params) {
    User user = new User();
    user.setEmail(params[1]);
    user.setPassword(params[2]);

    // Set the Content-Type header
    HttpHeaders requestHeaders = new HttpHeaders();
    requestHeaders.setContentType(new MediaType("application", "json"));
    HttpEntity<User> requestEntity = new HttpEntity<User>(user, requestHeaders);

    // Create a new RestTemplate instance
    RestTemplate restTemplate = new RestTemplate();

    // Add the Jackson and String message converters
    restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());

    // Make the HTTP POST request, marshaling the request to JSON, and the response to a String
    ResponseEntity<User> responseEntity = restTemplate.exchange(params[0], HttpMethod.POST, requestEntity, User.class);

    return responseEntity.getBody();
}

@Override
protected void onPostExecute(User user) {
    if (user.getSuccess()){
        android.app.FragmentManager fragmentManager = getFragmentManager();
        fragmentManager.beginTransaction().replace(R.id.content_frame, new AreaRiservataFragment()).commit();
    }else{

    }
 }
}

我得到的错误:不能解析方法getFragmentManager()

推荐答案

最好的解决办法可能是让你的的AsyncTask 嵌套类的活动。

The best solution might be to make your AsyncTask a nested class of your activity.

public class YourActivity extends Activity {

...


  class LoginTask extends AsyncTask<String, Void, User> {

    ...

    @Override
    protected User doInBackground(String... params) {
        ...
    }

    @Override
    protected void onPostExecute(User user) {
        ...
    }
  }
}

如果这是不可能的,你可以通过你的活动作为参数传递给的AsyncTask 。看一看的好例子<一个href=\"http://stackoverflow.com/questions/6024658/access-instance-variables-from-an-activity-inside-a-asynctask\">Access从AsyncTask的内的活动实例变量。

If it is not possible for you, you can pass your activity as a parameter to AsyncTask. Have a look at the good example Access instance variables from an activity inside a AsyncTask.

这篇关于调用Asyncktask OnPostExecute方法的片段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆