2012-07-11 2 views
0

J'essaie d'obtenir l'API Salesforce REST travailler avec Android et nouvelle à la programmation Android, suivi l'exemple de code pour se connecter avec SFDC http://wiki.developerforce.com/page/Getting_Started_with_the_Mobile_SDK_for_Android#AuthenticationSalesforce API Rest avec Android - NullPointerException @ AsyncRequestCallback

J'essaie d'obtenir quelques enregistrements de SFDC et les afficher dans l'application Android, ressemble lorsque l'Async est fait appel à « client.sendAsync (sfRequest, nouvelle AsyncRequestCallback() » -. NullPointerException est jeté

Je l'ai vu deux similaires questions en ligne, mais ne m'a pas aidé.En espérant que quelqu'un me pointer dans la bonne direction pour résoudre ce problème.Merci beaucoup.Old

public class GetAccountsActivity extends Activity { 

    private PasscodeManager passcodeManager; 

    private String soql; 
    private String apiVersion; 
    private RestClient client; 
    private TextView resultText; 
    private RestRequest sfRequest; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     // Get Api Version 
     apiVersion = getString(R.string.api_version); 
     //Create Query 
     soql = "select id, name from Account limit 10"; 

     // Setup view 
     setContentView(R.layout.get_accounts_activity); 
     ((TextView) findViewById(R.id.Acc_Title)).setText(apiVersion); 
     // Passcode manager 

     passcodeManager = ForceApp.APP.getPasscodeManager(); 
    } 

    @Override 
    public void onResume() { 
     super.onResume(); 

    //Get SFClient 
     // Login options 
     String accountType = ForceApp.APP.getAccountType(); 
     LoginOptions loginOptions = new LoginOptions(
       null, // login host is chosen by user through the server picker 
       ForceApp.APP.getPasscodeHash(), 
       getString(R.string.oauth_callback_url), 
       getString(R.string.oauth_client_id), 
       new String[] {"api"}); 

     new ClientManager(this, accountType, loginOptions).getRestClient(this, new RestClientCallback() { 
      @Override 
      public void authenticatedRestClient(RestClient client) { 
       if (client == null) { 
        ForceApp.APP.logout(GetAccountsActivity.this); 
        return; 
       } 
       GetAccountsActivity.this.client = client; 
      } 
     }); 
      //Get Rest Object to query 
      try { 
       sfRequest = RestRequest.getRequestForQuery(apiVersion, soql); 
       //Use SF Rest Client to send the request 
       client.sendAsync(sfRequest, new AsyncRequestCallback(){ 
        @Override 
        public void onSuccess(RestRequest request, RestResponse response){ 
        //Check responses and display results 
        // EventsObservable.get().notifyEvent(EventType.RenditionComplete); 
        }//end onSuccess 

        @Override 
        public void onError(Exception exception) { 
         //printException(exception); 
         EventsObservable.get().notifyEvent(EventType.RenditionComplete);     
        }//End Exception for Async Method 
       }); 
      }catch (UnsupportedEncodingException e) { 
       //printHeader("Could Send Query request"); 
       //printException(e); 
       return; 
      } 
    } 
} 

Entrez le code ici

+0

merci pour la question, mais je veux savoir comment vous importez ForceApp dans votre application, pouvez-vous s'il vous plaît partager certains utiles à ce sujet.Merci à l'avance. –

Répondre

0

Vous appelez client.sendAsync de onResume() mais le client n'est pas réglé jusqu'à ce que le rappel authenticatedRestClient est appelé, vous devez déplacer votre appel SendAsync dans le rappel authenticatedRestClient.

+0

Merci pour cette superfella. Ça a marché. – bluesky