Android Studio中的计数器对话框

Android Studio中的计数器对话框,android,Android,我有一个应用程序,它通过NFC在一张卡上执行写操作,这取决于通过的号码将执行一个号码或其他读取操作。我想我是用一个简单的for循环来实现的,问题是我不知道把它放在哪里。我给你举一个班级的例子: class HomeFragment : Fragment(), OnClickDetailsMonuments { private lateinit var homeFragmentViewModel: HomeFragmentViewModel private lateinit va

我有一个应用程序,它通过NFC在一张卡上执行写操作,这取决于通过的号码将执行一个号码或其他读取操作。我想我是用一个简单的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/4,2/4,3/4,等等。看看你能不能帮我一把。非常感谢。

您可以保存对话框的实例,并在对话框中更新文本视图,如下所示:

if(message) {
    if(mDialog?.isShowing == false) {
        showDialog("Correct reading", "1 de 4", "Continue")
    } else {
        mDialog.updateText("$count de 4")
        count ++
    }
}
private fun showDialog(title: String, process: String, titleButton: String) {
    mDialog = CustomSuccessDialog(title, process, titleButton)
    mDialog.show()
}
您的showDialog方法将如下所示:

if(message) {
    if(mDialog?.isShowing == false) {
        showDialog("Correct reading", "1 de 4", "Continue")
    } else {
        mDialog.updateText("$count de 4")
        count ++
    }
}
private fun showDialog(title: String, process: String, titleButton: String) {
    mDialog = CustomSuccessDialog(title, process, titleButton)
    mDialog.show()
}

问题是,我必须将这个号码传递给您,以便您更新。这个号码必须从我拨打的服务电话中提取。通过intent发送它有什么问题?