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

膨胀类片段时发生Kotlin错误

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

    我不明白为什么kotlin会给我这个错误:错误地扩展类片段 这是一段非常简单的代码

    主要活动片段

    import android.support.v4.app.Fragment
    import android.os.Bundle
    import android.view.LayoutInflater
    import android.view.View
    import android.view.ViewGroup
    import kotlinx.android.synthetic.main.fragment_main.*
    
    /**
     * A placeholder fragment containing a simple view.
     */
    class MainActivityFragment : Fragment() {
    
        override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
                                  savedInstanceState: Bundle?): View? {
            text.text = "test2"
            return inflater.inflate(R.layout.fragment_main, container, false)
        }
    
    }
    

    fragment_main.xml文件

    <?xml version="1.0" encoding="utf-8"?>
    <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivityFragment"
        tools:showIn="@layout/activity_main">
    
        <TextView
            android:id="@+id/text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hello World!"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent" />
    
    </android.support.constraint.ConstraintLayout>
    

    我做错什么了?

    2 回复  |  直到 7 年前
        1
  •  1
  •   Mariano Córdoba    7 年前

    在使用它之前你需要放大你的视图。将代码移动到 onViewCreated 事件:

    class MainActivityFragment : Fragment() {
    
        override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
                                  savedInstanceState: Bundle?): View? {
            return inflater.inflate(R.layout.fragment_main, container, false)
        }
    
        override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
            super.onViewCreated(view, savedInstanceState)
            text.text = "test2"
        }
    
    }
    
        2
  •  3
  •   Juan Felipe Arango    7 年前

    不能在之前指定文本来膨胀片段。首先在oncreateview上对片段进行充气,然后在oncreate方法上对文本进行赋值