如何使用kotlin使用片段
我无法找到如何使用kotlin使用片段。 我在onCreateView方法中遇到错误,请帮助我。
ListaFragment.kt:
class ListaFragment : Fragment() { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle): View? { val view = inflater.inflate(R.layout.fragment_lista, container, false) return view } }
fragment_lista.xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAlignment="center" android:text="Hello"/> </LinearLayout>
MainActivity.kt:
class MainActivity : AppCompatActivity() { private var listaFragment: ListaFragment? = null override fun onCreate(savedState: Bundle?) { super.onCreate(savedState) //cual es la diferencia con savedInstanceState setContentView(R.layout.activity_main) listaFragment = Fragment.instantiate(this@MainActivity, ListaFragment::class.java!!.getName()) as ListaFragment fragmentManager.beginTransaction().replace(R.id.flLista, listaFragment).commit() } }
activity_main.xml中:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.harol.appfinalandroid.MainActivity"> <FrameLayout android:id="@+id/flLista" android:layout_width="match_parent" android:layout_height="match_parent"></FrameLayout> </LinearLayout>
我没有语法错误,应用程序停止当我打开片段
错误:
Caused by: java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter savedInstanceState at com.example.harol.appfinalandroid.ListaFragment.onCreateView(ListaFragment.kt:0)
savedInstanceState
是可以为空的,但是你把它声明为Bundle
– 它应该是Bundle?
。
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
我也有过这个问题,直到找到它才使我疯狂。
在onCreateView
,您需要像这样使savedInstanceState
空:
savedInstanceState: Bundle?
(添加一个问号来表明它可以为空)
- Kotlin – 排序地图集合
- 如何删除国家代码,当从联系人中选择电话号码
- 在Kotlin的两个活动之间传递一个对象实例
- 如何获得Kotlin上的网页内容
- 如何检查我的应用程序是否是默认的启动器
- 从SD卡中选择图像,调整图像大小并将其保存回SD卡
- sharedpreferences上的nullPointerException helper类运行测试时
- Kotlin:如何使用List转换:未选中Cast:kotlin.collections.List <Kotlin.Any?>转换为kotlin.colletions.List <Waypoint>
- TestScheduler不起作用(Kotlin + RxJava2 + mockito)