-1

我有一个小问题,我有一个AsyncTask,如果用户注册与否,我会从服务器获得响应,如果用户访问后存在另一个片段,也通过存储在偏好用户的电子邮件,但是我有问题时,我拨打getFragmentManager(),有人可以帮我吗?谢谢。这是我的代码。在Asyncktask中调用片段OnPostExecute方法

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()'

+0

在'onPostExecute(......)之前加'@覆盖' –

+0

错误依然存在,没有任何改变 –

回答

0

最好的解决方案可能是让您的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

相关问题