【问题标题】:ERROR: android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity running?错误:android.view.WindowManager$BadTokenException:无法添加窗口——令牌 null 无效;您的活动正在运行吗?
【发布时间】:2019-11-09 16:50:18
【问题描述】:

我是一名学习者,正在尝试在另一个单独创建的布局中显示一些集合数据。我知道这可以通过 Intent 完成,但我一直在尝试根据教程视频使用 Dialog。

下面是代码

   override fun onBindViewHolder(holder:ContactViewHolder, position:Int){
        holder.name.text = data[position].name
        holder.phoneNumber.text = data[position].phone
        holder.image.setImageResource(data[position].image)
        holder.card.setOnClickListener {

            Toast.makeText(context, data[position].phone, Toast.LENGTH_LONG).show()

            val profilePage = Dialog(context)
            profilePage.setContentView(R.layout.profile)
            profilePage.window!!.setType(WindowManager.LayoutParams.TYPE_APPLICATION_PANEL)
            profilePage.setTitle("Profile page")

            val profileName = profilePage.findViewById<TextView>(R.id.profileName)
            val profileEmail = profilePage.findViewById<TextView>(R.id.profileEmail)
            val profileImage = profilePage.findViewById<ImageView>(R.id.profileImage)

            profileName.text = data[position].name
            profileEmail.text = data[position].phone
            profileImage.setImageResource(data[position].image)

            profilePage.show()

        }



    }

我也尝试了几个选项,例如在清单文件中设置权限,但错误仍然存​​在

【问题讨论】:

    标签: java android kotlin android-alertdialog android-windowmanager


    【解决方案1】:

    对于Dialogs,您需要一个Activity 作为Context

    您传递给Dialog 构造函数的context 可能不是一个活动。

    【讨论】:

    • 请问我该怎么做,因为我尝试过 Dialog(this@activityname), Dialog(activity) 但没有用
    • 您现在适配器中的context 来自哪里?改变它。
    • 上下文来自 onCreateaviewHolder。有没有更好的方法来添加点击侦听器以使其显示另一个包含来自适配器的数据的布局?
    猜你喜欢
    • 1970-01-01
    • 2019-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-31
    • 2014-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多