我在一个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
}
}
问候,约瑟夫