Я работаю над Android Studio с Kotlin.
Мое приложение имеет 3 кнопки (скажем, кнопки A, B, C) в Activity и работает нормально.
Однако, когда я отлаживаю приложение, оцененное значение по ключевому слову «когда» совпадает с другим значением.
Это код.
fun setOnClickListener(button: Button) {
button.setOnClickListener {
val fragment =
when(button.id) {
R.id.aButton -> AFragment()
R.id.bButton -> BFragment()
R.id.cButton -> CFragment()
else -> throw Exception()
}
}
Когда я нажимаю кнопку B, button.id
совпадает с R.id.bButton
.
Это то, что я намеревался сделать, но я запутался, когда увидел значение button.Id
и R.id.bButton
, поскольку button.Id
- это 2131165292, а R.id.bButton
- -1000025.
Не могли бы вы описать, почему эти два различных значения оцениваются одинаково?
[Дополнительно Информация]
Я проверяю значение, просто наведя курсор на button.Id
и R.id.bButton
, как показано ниже.
public boolean performClick() {
final boolean result;
final ListenerInfo li = mListenerInfo;
if (li != null && li.mOnClickListener != null) {
playSoundEffect(SoundEffectConstants.CLICK);
li.mOnClickListener.onClick(this);
result = true;
} else {
result = false;
}
sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_CLICKED);
return result;
}
Это трассировка мешка, на которой отладчик остановлен when(button.id)
.
onClick:22, SubActivity$setOnClickListener$1 (Package name of my app)
performClick:5637, View (android.view)
run:22429, View$PerformClick (android.view)
handleCallback:751, Handler (android.os)
dispatchMessage:95, Handler (android.os)
loop:154, Looper (android.os)
main:6119, ActivityThread (android.app)
main:776, ZygoteInit (com.android.internal.os)