代码之家  ›  专栏  ›  技术社区  ›  Vector

kotlin使用bundle.getString尝试捕获块

  •  0
  • Vector  · 技术社区  · 7 年前

    我们有传递回某个活动的意图附加项

    我们不理解为什么代码需要在try-catch块中

    返回此活动的导航是通过各种意图完成的,这些意图并不总是放置捆绑包获得的所有值。

        val intent = Intent(this,MainActivity::class.java)
        intent.putExtra("FROM", "NEW")
        intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION)
        startActivity(intent)
    

    而另一个按钮使用此代码

            holder.ivEdit.setOnClickListener {
    
            //val rowid = friendList.get(position).id
            val intent = Intent(context, MainActivity::class.java)
            intent.putExtra("FROM", "UPDATE")
            intent.putExtra("recordID", items.id)
            intent.putExtra("PERSON", items.person)
            intent.putExtra("PHONE", items.phone)
            intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
            context.startActivity(intent)
        }
    


    代码在onCreate函数中

            try {
            val bundle: Bundle = intent.extras
            from = bundle.getString("FROM","")
            txtPerson = bundle.getString("PERSON","")
            txtPhone = bundle.getString("PHONE","")
    
            if(from == "UPDATE") {
                showMSG("To CANCEL use back button")
                id = bundle.getInt("recordID", 4)
                btnAdd.visibility = View.INVISIBLE
                btnEdit.visibility = View.VISIBLE
                btnViewList.visibility = View.INVISIBLE
                etPerson.setText(txtPerson)
                etPhone.setText(txtPhone)
    
            }else if (from == "DELETE"){
    
                showMSG("To CANCEL use back button")
                btnAdd.visibility = View.INVISIBLE
                btnViewList.visibility = View.INVISIBLE
                btnEdit.visibility = View.INVISIBLE
                btnDelete.visibility = View.VISIBLE
                etPerson.setText(txtPerson)
                etPhone.setText(txtPhone)
                etPerson.isEnabled = false
                etPhone.isEnabled = false
    
            }else{
    
                btnViewList.visibility = View.VISIBLE
                btnAdd.visibility = View.VISIBLE
                btnEdit.visibility = View.INVISIBLE
            }
            if (id != 0) {
                //etPerson.setText(txtPerson)
                //etPhone.setText(txtPhone)
            }
        } catch (ex: Exception) {
        }
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   James_Duh    7 年前

    这里的猜测是,带有try-catch的活动也被另一个没有传递捆绑包信息的活动导航到,因此捆绑包被设置为null

    intent.extras不能为空
    我看不到比try-catch块更好的解决方法
    也许有人可以提供另一种解决方案。

    推荐文章