android-studio - 在片段到片段的通信中显示正确的值
问题描述
我正在 Android Studio 中构建一个带有两个片段的计算器。一个用于显示,一个用于按钮。当我尝试将数据发送到视图片段时,就会出现问题。按钮单击,但视图仅显示一些奇怪的十六进制信息,例如带有片段名称的信息,然后没有其他内容,但单击时仍然可以听到按钮。什么会导致这个?可能是视图绑定还是片段的设置方式?
class MainActivity : AppCompatActivity(), FragmentDataCouple {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
}
override fun dataCommunicator(editTextInput: String) {
val bundle = Bundle()
bundle.putString("results", editTextInput)
val transaction = supportFragmentManager.beginTransaction()
val upperFragment = DisplayFragment()
upperFragment.arguments = intent.extras
upperFragment.arguments = bundle
transaction.add(R.id.topFragment, upperFragment).commit()
}
键盘片段中的代码
class KeyboardFragment : Fragment(R.layout.fragment_keyboard) {
private var _binding: FragmentKeyboardBinding? = null
private val binding get() = _binding!!
private lateinit var fragmentCouple: FragmentDataCouple
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?,
): View? {
// Inflate the layout for this fragment
_binding = FragmentKeyboardBinding.inflate(inflater, container, false)
val view = binding.root
fragmentCouple = activity as FragmentDataCouple
//On click listeners for numbers
binding.btnZero.setOnClickListener { numberClicked() }
binding.btnOne.setOnClickListener { numberClicked() }
binding.btnTwo.setOnClickListener { numberClicked() }
binding.btnThree.setOnClickListener { numberClicked() }
binding.btnFour.setOnClickListener { numberClicked() }
binding.btnFive.setOnClickListener { numberClicked() }
binding.btnSix.setOnClickListener { numberClicked() }
binding.btnSeven.setOnClickListener { numberClicked() }
binding.btnEight.setOnClickListener { numberClicked() }
binding.btnNine.setOnClickListener { numberClicked() }
fun numberClicked() {
var btnClick = toString()
when (view) {
binding.btnZero ->{
btnClick += "0"
}
binding.btnOne -> {
btnClick += "1"
}
binding.btnTwo -> {
btnClick += "2"
}
binding.btnThree -> {
btnClick += "3"
}
binding.btnFour -> {
btnClick += "4"
}
binding.btnFive -> {
btnClick += "5"
}
binding.btnSix -> {
btnClick += "6"
}
binding.btnSeven -> {
btnClick += "7"
}
binding.btnEight -> {
btnClick += "8"
}
binding.btnNine -> {
btnClick += "9"
}
binding.posNeg ->{
btnClick = "-$btnClick"
}
}
fragmentCouple.dataCommunicator(btnClick)
}
显示片段代码
private var _binding: FragmentDisplayBinding? = null
private val binding get() = _binding!!
private lateinit var fragmentCouple: FragmentDataCouple
private var displayMath: String? = ""
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
_binding = FragmentDisplayBinding.inflate(inflater, container, false)
val view = binding.root
fragmentCouple = activity as FragmentDataCouple
displayMath = arguments?.getString("results")
binding.displayView.text = displayMath
return view
}
解决方案
推荐阅读
- c# - centos7中net core 3的tcpclient无法收发数据
- react-native - 关于 React Native App 中的 this.state 函数
- ios - 从他们的 GameCenter 帐户中检索用户的国家或地区的最佳方法是什么?
- r - eval 中的错误(inp、data、env):找不到对象“数据库”
- c# - 尝试 P/Invoke 一个简单的 C++ 函数时出现 AccessViolationException
- java - Spring boot 控制器路径扩展另一个路径
- python-3.x - 如何在通过请求抓取期间绕过 reCaptcha?
- xml - 无法使用 XSL 循环遍历所有元素
- php - 创建和调用类似于 laravel 的成员函数
- java - 在这种情况下,`ParameterizedType#getActualTypeArguments` 返回一个包含多个元素的数组