【问题标题】:Call a Fragment in Asyncktask OnPostExecute method在 Asynctask OnPostExecute 方法中调用 Fragment
【发布时间】:2016-03-06 15:33:24
【问题描述】:

我有一个小问题,我有一个 AsyncTask,如果用户注册与否,我会从服务器获得响应,在调用之后,如果用户访问存在于另一个片段中,也可以通过存储在首选项中用户电子邮件,但是当我打电话给getFragmentManager() 时遇到问题,有人可以帮我吗?谢谢你。这是我的代码。

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{

    }
 }
}

我收到错误:Cannot Resolve Method 'getFragmentManager()'

【问题讨论】:

  • onPostExecute(......)之前添加@Override
  • 错误依旧,没有任何改变

标签: java android android-fragments android-asynctask sharedpreferences


【解决方案1】:

最好的解决方案可能是让您的 AsyncTask 成为您活动的嵌套类。

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。看看Access instance variables from an activity inside a AsyncTask 的好例子。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多