var mainFragment: NeedsFragment? = null supportFragmentManager.beginTransaction().add(R.id.container, mainFragment!!) .commit()
我试图从活动打开片段,但应用程序崩溃给予错误,无法打开活动。在Kotlin怎么能这样?
njthzxwz1#
我认为您应该先创建fragment,然后再输入null,它应该如下所示:
var mainFragment : NeedsFragment = NeedsFragment()
cnh2zyt32#
var mainFragment: NeedsFragment = NeedsFragment() supportFragmentManager.beginTransaction().add(R.id.container, mainFragment) .commit()
在创建之外..
class frag : NeedsFragment() { override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { // replace if you already have a layout return inflater.inflate(R.layout.frag, container, false) } }
示例frag.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_horizontal|center_vertical" android:orientation="vertical"> <TextView android:id="@+id/txtView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TextView" /> </LinearLayout>
6ovsh4lw3#
看 起来 你 用 错 了 函数 。 用 replace ( ) 函数 代替 add ( ) , 我 很 确定 它 会 起 作用 。供 您 参考 的 代码 段 :
val yourFragment = YourFragment() supportFragmentManager.beginTransaction().replace(R.id.container, yourFragment).commit()
中 的 每 一 个
3条答案
按热度按时间njthzxwz1#
我认为您应该先创建fragment,然后再输入null,它应该如下所示:
cnh2zyt32#
在创建之外..
示例frag.xml
6ovsh4lw3#
看 起来 你 用 错 了 函数 。 用 replace ( ) 函数 代替 add ( ) , 我 很 确定 它 会 起 作用 。
供 您 参考 的 代码 段 :
中 的 每 一 个