2012-07-11 4 views
0

NullPointerException이의 @의 AsyncRequestCallback, 나는 얻으려고 SFDC http://wiki.developerforce.com/page/Getting_Started_with_the_Mobile_SDK_for_Android#Authentication세일즈 포스 레스트 API - 나는 안드로이드와 새로운 안드로이드 프로그래밍 작업 세일즈 포스 REST API를 얻으려고

를 연결하는 샘플 코드를 따라 SFDC에서 몇 레코드 및 안드로이드 응용 프로그램에서 표시하는 비동기 호출이 "client.sendAsync (sfRequest, 새 AsyncRequestCallback()"이루어질 때처럼 보인다 - NullPointerException throw됩니다.)

나는 비슷한 몇 가지를 보았다 온라인으로 문제를 제기했지만 도움이되지 못했습니다. 문제 해결을 위해 올바른 방향을 제시하는 사람이 있으면 도와주세요. 감사합니다.

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; 
      } 
    } 
} 

(10)는 여기에 코드

+0

질문에 감사하지만 응용 프로그램에서 ForceApp을 가져 오는 방법을 알고 싶습니다. 몇 가지 유용한 정보를 공유해주십시오. 미리 감사드립니다. –

답변

0

당신은 onResume에서 client.sendAsync를 호출()하지만 클라이언트가 authenticatedRestClient 콜백이 호출 될 때까지, 당신은 authenticatedRestClient 콜백으로가 SendAsync 호출을 이동할 필요가 설정되어 있지를 입력합니다.

+0

그 superfella 주셔서 감사합니다. 그게 효과가 있었어. – bluesky

관련 문제