Activity ResultCrash, Android Studio, Котлин
Я добавляю социальные приложения в свое приложение (я изучаю кодирование для Android в Kotlin). У меня есть вход в Facebook и Twitter, но я должен закомментировать один или другой в ActivityResult. Есть ли способ, чтобы оба без комментариев.
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
// Pass the activity result back to the Facebook SDK
callbackManager.onActivityResult(requestCode, resultCode, data)
loginButton!!.onActivityResult(requestCode, resultCode, data)
}
Первый - это Facebook, а второй - Twitter.
2 ответа
Решение
Используйте разные requestCode
с, что-то вроде:
companion object {
private const val CODE_FB = 100
private const val CODE_TWITTER = 101
}
Проходить CODE_FB
когда ты startActivityForResult()
для Facebook и использовать CODE_TWITTER
для твиттера.
Внутри вашего onActivityResult()
, фильтр по коду запроса:
when (requestCode) {
CODE_FB -> callbackManager.onActivityResult(requestCode, resultCode, data)
CODE_TWITTER -> loginButton!!.onActivityResult(requestCode, resultCode, data)
}
В OnActivityResult()
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.d(TAG, "onActivityResult:" + requestCode + ":" + resultCode + ":" + data);
if (requestCode == RC_SIGN_IN) {
if (resultCode != RESULT_OK) {
mShouldResolve = false; // This variable comes from onConnectionFailed class
}
mIsResolving = false;
mGoogleApiClient.connect();
}else{
//Now it must be Twitter.
callbackManager.onActivityResult(requestCode, resultCode, data);
}
}