android - 与 Android Studio 中的计数器对话
问题描述
我有一个应用程序通过 NFC 在卡上执行写入,具体取决于通过的数字将执行数字或其他读取。我想我用一个简单的 for 循环来做这件事,问题是我不知道把那个 for 循环放在哪里。我给你一个类的例子:
class HomeFragment : Fragment(), OnClickDetailsMonuments {
private lateinit var homeFragmentViewModel: HomeFragmentViewModel
private lateinit var homeMonumentsAdapter: MonumentsAdapter
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View =
inflater.inflate(R.layout.home_fragment, container, false)
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
initViews()
getObservers()
onClickGoToMaps(view)
homeFragmentViewModel.loadJsonFromRetrofit()
}
private fun onClickGoToMaps(view: View) {
fbGoToMaps.setOnClickListener {
view.findNavController().navigate(R.id.googleMapsMonumentsFragment)
}
}
private fun getObservers() {
viewModel.getNFCInfo().observe(viewLifecycleOwner, Observer {
when(it.status){
AsyncResult.Status.SUCCESS -> {
NFCProvider.initialize(context, it.data)
}
AsyncResult.Status.ERROR -> {
}
AsyncResult.Status.LOADING -> {
}
}
})
}
override fun onClickFavListener(monuments: MonumentsVO) {
homeFragmentViewModel.updateDatabaseFavoriteCheckFromViewModel(monuments.id, monuments.fav)
}
override fun onClickRowListenerExtras(monuments: MonumentsVO, position: Int, extras: FragmentNavigator.Extras) {
val bundle = bundleOf(BUNDLE_MONUMENT to monuments)
view?.findNavController()?.navigate(R.id.detailsMonumentsFragment, bundle, null, extras)
}
override fun onClickRowListener(monuments: MonumentsVO, position: Int) {}
private fun initViews() {
homeFragmentViewModel = ViewModelProviders.of(this).get(HomeFragmentViewModel::class.java)
rvHomeFragmentMonumentsRetrofit.setHasFixedSize(true)
val layoutManager = LinearLayoutManager(context)
rvHomeFragmentMonumentsRetrofit.layoutManager = layoutManager
}
override fun onResume() {
super.onResume()
(activity as AppCompatActivity).supportActionBar?.show()
}
private fun showDialog(title: String, process: String, titleButton: String) {
val dialog = CustomSuccessDialog(title, process, titleButton)
dialog.show()
}
override onNewIntentResult(intent) {
val message = NFCProvider.retrieveNfcMessage(intent)
if(message) {
showDialog("Correct reading", "1 de 4", "Continue")
} else {
showDialog("Error reading", "1 de 4", "Retry")
}
}
}
如您所见,问题是当我启动 NFC 时是我传递消息的时候。我从互联网服务收到这条消息,它返回我必须记录的卡片数量,这是我必须通过的卡片数量,因为一方面我有 NFC 所需的 onNewIntent 和另一方面,观察者,我不知道该怎么做才能把它们放在一起,每次我写一张NFC卡我都会得到正确的对话,当我继续下一个时,对话的数量会增加:1 of 4, 2 of 4, 3 of 4 等等。看看你能不能帮我一把。非常感谢。
解决方案
您可以保存对话框的实例并在对话框中更新您的 textView,如下所示:
if(message) {
if(mDialog?.isShowing == false) {
showDialog("Correct reading", "1 de 4", "Continue")
} else {
mDialog.updateText("$count de 4")
count ++
}
}
您的 showDialog 方法将如下所示:
private fun showDialog(title: String, process: String, titleButton: String) {
mDialog = CustomSuccessDialog(title, process, titleButton)
mDialog.show()
}
推荐阅读
- angular - 提交后反应表单红色
- android - 为什么我的 android 应用程序在 google play store 上上线的时间太长(现在快一周了)?
- list - Flutter ListView 改变值
- reactjs - 调整 Create-React-App 中的代理设置以绕过 CORS 阻塞错误,现在得到未定义的响应
- stylelint - stylelint 是否有检测未知值的规则?
- python - 无法解析导入“blocktunes” Pylance 报告缺少导入
- javascript - 为什么带有多个 == where 条件的查询不返回数据?
- python - 如何从 BS4 函数的返回中调用所有“p”项?
- grpc - 服务状态 gRPC
- .net - 了解 .NET Core/MVC 中的 DI