我正在使用 MVP 并创建了一个回调,该回调在登录屏幕中按下按钮时执行,并且实现位于 MainActivity 中,在执行回调片段替换(不起作用)后,我还进行了检查。
if(!isAdded){
return null
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试为每个片段创建新实例,但仍然没有成功。我被困了一段时间,请帮助我。
主要活动
class MainActivity : AppCompatActivity(), IMainActivityContract.View {
private lateinit var fragmentManager: FragmentTransaction
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
Constants.mAuth = FirebaseAuth.getInstance()
changeFragment(Constants.NAV_FRAG_LOGIN)
}
override fun changeFragment(fragmentID: Int) {
if(supportFragmentManager.isDestroyed || supportFragmentManager.fragments.isEmpty()){
fragmentManager = supportFragmentManager.beginTransaction()
}
try {
when (fragmentID) {
Constants.NAV_FRAG_LOGIN -> {
fragmentManager.replace(R.id.fragmentContainer,FragmentLogin()).commit()
}
Constants.NAV_FRAG_MAIN -> {
fragmentManager.replace(R.id.fragmentContainer, FragmentMain()).commit()
}
Constants.NAV_FRAG_ADDITION -> {
fragmentManager.replace(R.id.fragmentContainer,FragmentAddition()).commit()
}
Constants.NAV_FRAG_CONFIGURATION -> {
fragmentManager.replace(R.id.fragmentContainer,FragmentConfiguration()).commit()
}
}
} catch (message: IllegalStateException) {
Log.d("LoginDebug", "Exception …Run Code Online (Sandbox Code Playgroud)