我有一个问题。
我写了一个Java Android App并转换为Kotlin。它工作在Java jsut很好,但现在当我运行应用程序时,它给了我一个RuntimeError。碎片不能膨胀:
错误
FATAL EXCEPTION: main
Process: com.jaielsoft.www.emergencyapp, PID: 10753
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.jaielsoft.www.emergencyapp/de.htw_berlin.f4.ai.aa.activities.MainActivity}: android.view.InflateException: Binary XML file line #0: Error inflating class fragment
...
Caused by: android.view.InflateException: Binary XML file line #0: Error inflating class fragment
....
Caused by: java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter savedInstanceState
....
以下是涉及的类和布局文件:
MainActivity.kt:
package de.htw_berlin.f4.ai.aa.activities
...
class MainActivity : FragmentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
if (savedInstanceState == null)
this.setContentView(R.layout.mainlayout)
}
}
mainlayout.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment
android:name="de.htw_berlin.f4.ai.aa.fragments.MainFragment"
android:id="@+id/main_menu_fragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
MainFragment.kt
package de.htw_berlin.f4.ai.aa.fragments
...
class MainFragment : Fragment() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle): View? {
return inflater.inflate(R.layout.mainfragmentlayout, container, false)
}
}
mainfragmentlayout.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">
<ImageView
android:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:scaleType="centerCrop"
android:src="@drawable/blue"
android:contentDescription="@null" />
<ImageButton
android:id="@+id/sosButton"
android:layout_width="300dp"
android:layout_height="300dp"
android:layout_above="@+id/contactsButton"
android:layout_alignStart="@+id/contactsButton"
android:onClick="callForHelp"
android:layout_marginBottom="98dp"
android:background="@null"
android:scaleType="centerCrop"
android:src="@drawable/emergencybutton"
android:contentDescription="@null"/>
<ImageButton
android:id="@+id/contactsButton"
android:layout_width="300dp"
android:layout_height="100dp"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="57dp"
android:background="@null"
android:onClick="startContactActivity"
android:scaleType="centerCrop"
android:src="@drawable/contactsbutton"
android:contentDescription="@null" />
<ImageButton
android:id="@+id/mapButton"
android:layout_width="150dp"
android:layout_height="50dp"
android:layout_alignParentEnd="true"
android:layout_alignParentTop="true"
android:layout_marginEnd="23dp"
android:layout_marginTop="20dp"
android:onClick="startMapActivity"
android:background="@null"
android:scaleType="centerCrop"
android:src="@drawable/mapbutton"
android:contentDescription="@null"/>
</RelativeLayout>
问题出在哪里?你能帮我吗?
提前致谢
答案 0 :(得分:0)
更改savedInstanceState
Bundle?
到
Bundle
请注意,我使用onCreateView
代替savedInstanceState
{{1}}为空。
当从Kotlin中的Java类重写方法时,这通常是一个问题,有时您不确切地知道参数是否可以为null。
在这种情况下,{{1}}可以(并且将会)调用{{1}}为空,因此您可以使其可为空。