首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DialogFragment中的kotlinx.android.synthetic返回null

DialogFragment中的kotlinx.android.synthetic返回null
EN

Stack Overflow用户
提问于 2020-11-11 03:36:00
回答 1查看 59关注 0票数 0

在我开始之前,我已经读过像this one这样的类似措辞的帖子,但它们对我来说并不起作用。

正如我在标题中解释的那样,当我单击肯定按钮(在本例中为“ok”)时,我会得到一个NPE。如果有人能指出我做错了什么,那就太好了!下面是我的设置的抽象版本

MainFragment.kt

代码语言:javascript
复制
class MainFragment: DialogFragment() {

    override fun onCreateDialog(savedInstanceState: Bundle?) =
            AlertDialog.Builder(context!!)
                .setView(FragmentMainBinding.inflate(LayoutInflater.from(context)).root)
                .setTitle(R.string.title_main)
                .setNegativeButton(R.string.cancel, null)
                .setPositiveButton(R.string.ok) { _, _ -> onPositiveButtonTapped() }
                .create()

    private fun onPositiveButtonTapped() {
        val g = arrayListOf(ground_nbr_edit_text.text.toString()) // NullPointerException
        // ...
    }

}

fragment_main.xml

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<layout>
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <EditText
            android:id="@+id/ground_nbr_edit_text"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

    </LinearLayout>
</layout>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-11 05:44:11

DialogFragment在onCreateDialog()之后调用onCreateView(),然后将该视图用于对话框的内容,替换您在onCreateDialog()中已经设置的任何内容。因此,将视图创建移动到onCreateView()

代码语言:javascript
复制
class MainFragment: DialogFragment() {

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?) =
        FragmentMainBinding.inflate(inflater).root

    override fun onCreateDialog(savedInstanceState: Bundle?) =
            AlertDialog.Builder(context!!)
                .setTitle(R.string.title_main)
                .setNegativeButton(R.string.cancel, null)
                .setPositiveButton(R.string.ok) { _, _ -> onPositiveButtonTapped() }
                .create()

    private fun onPositiveButtonTapped() {
        val g = arrayListOf(ground_nbr_edit_text.text.toString()) // NullPointerException
        // ...
    }

}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64775628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档