android - 更改广播接收器中的文本
问题描述
我在 Kotlin 中使用广播接收器,并试图更改接收器内少数文本视图和图像视图的文本。但是,更改在应用程序中不可见。我已经对其进行了调试,并且在尝试设置变量时可以看到数据存在于变量中。
UserData 类包含字段名称、电子邮件、头像名称和头像颜色中的数据。但是,没有任何文本字段或图像视图显示分配的数据。
LocalBroadcastManager.getInstance(this).registerReceiver(userDataChangeReceiver, IntentFilter(BROADCAST_USER_DATA_CHANGE))
private val userDataChangeReceiver = object : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
if (AuthService.isLoggedIn) {
usernameNavHeader.text = UserData.name
userEmailNavHeader.text = UserData.email
val resourceId = resources.getIdentifier(UserData.avatarName, "drawable", packageName)
userImgNavHeader.setImageResource(resourceId)
userImgNavHeader.setBackgroundColor(UserData.getAvatarColor(UserData.avatarColor))
loginBtnNavHeader.text = getString(R.string.logout)
}
}
}
val userDataChange = Intent(BROADCAST_USER_DATA_CHANGE)
LocalBroadcastManager.getInstance(this).sendBroadcast(userDataChange)
这是布局
<ImageView
android:id="@+id/userImgNavHeader"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_marginStart="12dp"
android:layout_marginBottom="8dp"
android:contentDescription="@string/nav_header_desc"
android:paddingTop="@dimen/nav_header_vertical_spacing"
app:layout_constraintBottom_toTopOf="@+id/loginBtnNavHeader"
app:layout_constraintStart_toStartOf="parent"
app:srcCompat="@drawable/profiledefault" />
<TextView
android:id="@+id/usernameNavHeader"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:paddingTop="@dimen/nav_header_vertical_spacing"
app:layout_constraintStart_toEndOf="@+id/userImgNavHeader"
app:layout_constraintTop_toTopOf="@+id/userImgNavHeader"
tools:text="ABD" />
<TextView
android:id="@+id/userEmailNavHeader"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
app:layout_constraintStart_toEndOf="@+id/userImgNavHeader"
app:layout_constraintTop_toBottomOf="@+id/usernameNavHeader"
tools:text="abd@email.com" />
<Button
android:id="@+id/loginBtnNavHeader"
android:layout_width="wrap_content"
android:layout_height="32dp"
android:layout_marginStart="4dp"
android:layout_marginBottom="8dp"
android:background="@android:color/transparent"
android:onClick="loginBtnNavClicked"
android:text="@string/login"
android:textAlignment="center"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" />
解决方案
推荐阅读
- javascript - Javascript - 带有 WebSockets 的 requestAnimationFrame - 性能问题
- java - 权限被拒绝执行功能
- css - CSS 谷歌地图消失效果
- java - 为什么输出会是“100”和“500”?
- c++ - 将(排序的)std::vector 传递给方法
- mysql - SQL连接具有重复条目和count()组的多个表
- mongodb - 按小时分组并计数 MongoDB
- amazon-redshift - Redshift:更改服务器配置或保留更改所有会话
- xamarin - 如何在列表视图中实现 xamarin Forms Checkbox 仅删除选中的行
- python - AWS Elastic BeanStalk SignatureDoesNotMatch