Добавить фрагмент во время выполнения с причинами Kotlin «К сожалению приложение остановилось»

Я новичок в Kotlin, и я пытаюсь запустить фрагмент во время выполнения, но мое приложение вылетает с сообщением «К сожалению приложение остановилось»,

Вот мой класс фрагмента kotlin:

import android.os.Bundle import android.support.v4.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup class TestFragment : Fragment() { override fun onCreateView (inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? { return inflater?.inflate(R.layout.test_fragment, container, false) } } 

Рамка макета начинается с:

 <FrameLayout 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:id="@+id/testFragment" android:layout_width="match_parent" android:layout_height="match_parent"> 

И вот моя деятельность:

 import android.annotation.SuppressLint import android.os.Bundle import android.support.v4.app.Fragment import android.support.v7.app.AppCompatActivity import kotlinx.android.synthetic.main.activity_display_text.* class DisplayText : AppCompatActivity() { @SuppressLint("ResourceType") override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_display_text) var toDisplay = intent.extras.get("MainActivity_HELLO_WORLD") displayText.text = toDisplay as String if(R.id.testFragment !== null) { if(savedInstanceState !== null) { return } val fragment = TestFragment() getSupportFragmentManager().beginTransaction() .add(R.id.testFragment, fragment).commit() } } } 

Не могли бы вы рассказать мне, что я делаю неправильно?

Этот вызов метода неверен:

 getSupportFragmentManager().beginTransaction().add(R.id.testFragment, fragment).commit() 

потому что первым параметром метода add должен быть ваш контейнер-фрагмент (макет в вашей деятельности, который получит frament).

Здесь вы пытаетесь передать макет своего фрагмента, который не является частью уже завышенного вида hierachy. Таким образом, FragmentManager ищет в иерархии представления для представления, которого не существует, и он сбой.

Вам необходимо передать идентификатор действительной ViewGroup. Обычно мы используем FrameLayout как контейнер фрагмента. И этот контейнер должен быть включен в layout.xml вашей деятельности

Надеюсь это поможет.