未找到片段PostFragment的id为0x7f080035(com.androidjetpackph:id/container)的视图
我想为所有活动创建一个契约,出于这个原因,我正在创建一个基本活动,但是由于某些原因,出现了关于R.id.container的错误 我正在使用以下代码执行基本活动:未找到片段PostFragment的id为0x7f080035(com.androidjetpackph:id/container)的视图,android,android-layout,android-fragments,android-xml,Android,Android Layout,Android Fragments,Android Xml,我想为所有活动创建一个契约,出于这个原因,我正在创建一个基本活动,但是由于某些原因,出现了关于R.id.container的错误 我正在使用以下代码执行基本活动: abstract class BaseActivity : AppCompatActivity() { @LayoutRes abstract fun layoutToInflate(): Int abstract fun doOnCreated() open fun initialFragme
abstract class BaseActivity : AppCompatActivity() {
@LayoutRes
abstract fun layoutToInflate(): Int
abstract fun doOnCreated()
open fun initialFragment(): Fragment? = null
abstract fun defineInitialFragment()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
doOnCreated()
}
}
这是我的主要活动
class MainActivity : BaseActivity() {
override fun layoutToInflate() = R.layout.activity_main
override fun doOnCreated() {
defineInitialFragment()
}
override fun initialFragment() = PostFragment.newInstance()
override fun defineInitialFragment() {
val initialFragment = initialFragment() ?: return
supportFragmentManager
.beginTransaction()
.replace(R.id.container, initialFragment)
.commitNow()
}
这是我的activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<layout
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">
<FrameLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.main.MainActivity" />
</layout>
在您发布的代码中,这是您的基础
onCreate()
:
这是你的子类:
在这两个地方,您实际上都没有设置活动的内容视图。您必须在某个地方调用setContentView(layouttonflate())
,可能在基本活动的onCreate()中:
对就这样!!还有一个不相关的问题,dagger真的值得使用吗?我应该自己注射吗?作为移动消费的后端语言,你推荐nodejs吗?谢谢你,很抱歉问了我两个问题
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
doOnCreated()
}
override fun doOnCreated() {
defineInitialFragment()
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(layoutToInflate())
doOnCreated()
}