-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

相關問題