2013-03-22 4 views
2

App Engine에 연결된 Android 프로젝트에 대한 Google의 자습서를 따라 왔는데 this page에 머물러 있습니다.GoogleAccountCredential.newChooseAccountIntent()를 호출 한 후 onActivityResult가 호출되지 않았습니다.

특히 섹션 8c에는 오류가있는 것으로 보입니다. 제목에 설명 된대로 onActivityResult 메서드는 다음 코드에서 호출되지 않습니다. 나는 AsyncTask를 실행하지 않을 아무것도가 GAE 콘솔의 데이터 저장소에 끝없는 것으로 나타났습니다 때

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    // Start up RegisterActivity right away 
    Intent intent = new Intent(this, RegisterActivity.class); 
    startActivity(intent); 

    credential = GoogleAccountCredential.usingAudience(this,"server:client_id:" + WEB_CLIENT_ID); 
    startActivityForResult(credential.newChooseAccountIntent(), REQUEST_ACCOUNT_PICKER); 
    System.out.println("onCreate finished"); 
    //new EndpointsTask().execute(getApplicationContext()); 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

    super.onActivityResult(requestCode, resultCode, data); 

    switch (requestCode) { 
    case REQUEST_ACCOUNT_PICKER: 
     if (data != null && data.getExtras() != null) { 

      accountName = data.getExtras().getString(AccountManager.KEY_ACCOUNT_NAME); 
      if (accountName != null) { 
       credential.setSelectedAccountName(accountName); 
       new EndpointsTask().execute(getApplicationContext()); 
      } 
     } 
     break; 
    } 

모든이 시점까지 잘 진행되고있다.

누구든지이 문제를 알고 있고 올바른 방향으로 나를 가리킬 수 있습니까? 나는 이것에 몇 시간 동안 있었고 내가 생각할 수있는 것은 "resultCode"를 설정하지 않은 다른 활동에 문제가 있다는 것입니다.

어떤 도움도 크게 받으실 수 있습니다.

+1

onResultActivity() 메소드가 등록 활동 이전에 활동을 시작한 이후에 호출되지 않은 이유는 그 것처럼 보입니다. 이 메서드는 credential = GoogleAccountCredential.usingAudience (this, "server : client_id :"+ WEB_CLIENT_ID); startActivityForResult (credential.newChooseAccountIntent(), REQUEST_ACCOUNT_PICKER); 등록 활동에서이 startActivity (인 텐트)를 사용하여 시작했습니다. –

+0

자격증을 얻기 전에 바로 다른 활동이 시작되었다는 점을 지적 해 주신데 감사드립니다. 나는 지금이 튜토리얼에서 터널 비전을 가지고있다.여전히 문제가 있지만 최소한 onActivityResult 메서드가 호출되고 있습니다. – traw

+0

활동을 시작한 다음'onCreate'에서 더 많은 코드를 계속 추가해서는 안됩니다. 'startActivity (intent)'를하는 다른 방법을 찾아야한다. –

답변

2

두 활동 (RegisterActivity)과 Google 계정 선택기 활동을 동시에 시작합니다. RegisterActivityonActivityResult() 함수로의 복귀를 결코 트리거하지 않도록 호출됩니다. 이에

startActivity(intent); 

:

startActivityForResult(intent, REQUEST_REGISTER); 

당신은 새로운 요청 REQUEST_REGISTER을 만들어야합니다

그래서, 당신이해야 할 첫 번째 일은이 변경됩니다.

startActivity()이 실행되지 않는 이유는 onActivityResult()으로 반환되기 때문입니다. startActivityForResult() 만 수행합니다. 이것은 Android가 작동하는 방식입니다.

두 번째로, 두 활동이 동시에 시작된다는 것이 이상합니다. 왜 이것이 진행되고 있는지에 대한 논리를 매우 자세히 살펴야합니다. 나는 강하게 당신이 에 2 개의 활동을 순차적으로 시작하고 싶다고 의심한다. 어느 것이 먼저 가야할지 모르겠습니다.

onCreate()에서 처음으로 시작하십시오 (RegisterActivity 인 경우 startActivityForResult()을 사용해야합니다). REQUEST_*requestCode이 첫 번째 활동에 대한 startActivityForResult()로 전송 requestCode와 일치하는 경우

onActivityResult()의 두 번째 활동을 시작

.

Google 계정 선택기, 등록 및 활동으로 돌아가는 것이 문제를 해결할 수 있습니다.

관련 문제