2012-04-02 15 views
1

私はアンドロイドプロジェクトでstackmob APIを使用していますが、正常終了するとコールバックが呼び出されないようです。私が正しく動作するために必要な機能は、ログイン機能です。私はのonClickハンドラから呼び出され、次の機能があります:関数が呼び出されるとStackmobログインコールバックが成功しなかった場合

private void logIn() 
    { 
     Map params = new HashMap(); 
     EditText e = (EditText) findViewById(R.id.userNameEditText); 
     params.put("username", e.getText().toString()); 
     e = (EditText) findViewById(R.id.passwordEditText); 
     params.put("password", e.getText().toString()); 
     m_stackmob.login(params, new StackMobCallback() 
     { 
      @Override 
      public void success(String response)//<--never called 
      { 
       Log.d(TAG, response);//<--Never see this in the log 
       setLoggedIn();//<--UploadActivity member function never fires 
      } 

      @Override 
      public void failure(StackMobException e) 
      { 
       Log.d(TAG, e.getMessage()); 
       Toast.makeText(TimeTrackerUploadActivity.this, 
           e.getMessage(), 
           Toast.LENGTH_LONG).show();   
      } 
    }); 
} 

、私はstackmobにログインしていますが、データを投稿することができますが、コールバックの成功関数が呼び出されることはありません。なぜこれが、またはそれを修正する方法を知っていますか?私は何か間違っているのですか?アクティビティの状態を設定するためにログインが成功するかどうかを知る必要があります。ありがとうございました。

私はこれに対する答えを見つけられませんでしたが、回避策が見つかりました。コールバックの仕事ほどクリーンではありませんが、仕事は終わりです。ここにあります。

private void logIn() 
    { 
     Map params = new HashMap(); 
     EditText e = (EditText) findViewById(R.id.userNameEditText); 
     params.put("username", e.getText().toString()); 
     e = (EditText) findViewById(R.id.passwordEditText); 
     params.put("password", e.getText().toString()); 
     StackMobRequestSendResult result = m_stackmob.login(params, new StackMobCallback() 
     { 
      @Override 
      public void success(String response) 
      {} 

      @Override 
      public void failure(StackMobException e) 
      { 
       Log.d(TAG, e.getMessage()); 
       Toast.makeText(TimeTrackerUploadActivity.this, 
           e.getMessage(), 
           Toast.LENGTH_LONG).show(); 
      } 
     }); 

     RequestSendStatus status = result.getStatus(); 
     if(status.compareTo(RequestSendStatus.SENT) == 0) 
     { 
      Log.d(TAG, "Login success detected!!!"); 
      setLoggedIn(); 
     } 
     else 
     { 
      //failure callback works and can handle this 
     } 
    } 

よろしく、 ジョセフ

+0

@Taylor新しいタグを追加してくれてありがとう。 – jdwieber

+0

私は上記の問題の問題を回避するための作業を追加しました。私はコールバックを間違って使用しているのか、それともあまり期待しているのかを知ることにはまだ興味があります。 – jdwieber

答えて

2

はあなたの問題を回避するには、実際に機能していません。 StackMobSendResultは、要求が送信されただけで、正常に処理されたというわけではありません。あなたが本当に望むのは、コールバック関数です。

元のコードが正しいように見え、同じコードが私のために機能します。最近の最新のsdk(0.4.2)で試してみることができますか? https://github.com/downloads/stackmob/StackMob_Android/stackmob-android-v0.4.2.zip 動作しない場合は、 StackMobCommon.LOGGING_ENABLED = trueを追加してデバッグログを有効にできます。 StackMobCommon.initを呼び出す前にonCreateに直接 を追加してください。そうすれば、LogcatにStackMobというタグが付いたメッセージが表示されます。ここに投稿できますか?ありがとう

+0

私はstackmobのウェブサイトから0.4.2をダウンロードしています。あなたが言ったようにギターから引き出してやります。私は結果を掲載します。また、戻り値についての情報のおかげで.. – jdwieber

+0

私は間違っていた。私はsdk 0.4.1を持っています。上記のリンク(0.4.2)からバージョンを使用すると、ログインコールバックが機能します。ありがとうダグラス。 – jdwieber

関連する問題