Android プロジェクトで stackmob API を使用していますが、正常に完了したときにコールバックが呼び出されないようです。正しく動作させるために必要な機能は、ログイン機能です。onClick ハンドラーから呼び出される次の関数があります。
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
}
}
よろしく、ジョセフ