1

fragments前のフラグメントのデータが消えないように、それらを再作成せずに 2 つの間を移動しようとしています。

インターネットで答えを探し、何時間も試みましたが、成功しませんでした。私はそれらのリンクを見ました:

その後show()hide()私も試してみましたAddToBackStack()が、まだ成功していません

class MainActivity : AppCompatActivity(){

    private val onNavigationItemSelectedListener = BottomNavigationView.OnNavigationItemSelectedListener { item ->
        @Override
        when (item.itemId) {
            R.id.navigation_home -> {
                //replaceFragment(SignInFragment())
                supportFragmentManager.beginTransaction().hide(AllEventsFragment()).commit()
                supportFragmentManager.beginTransaction().show(SignInFragment()).commit()
                return@OnNavigationItemSelectedListener true
            }
            R.id.navigation_events -> {
                //replaceFragment(AllEventsFragment())
                supportFragmentManager.beginTransaction().hide(SignInFragment()).commit()
                supportFragmentManager.beginTransaction().show(AllEventsFragment()).commit()
                if (currentUser.isNotEmpty()) {
                    updateRecyclerView()
                    sign_in_error?.visibility = View.INVISIBLE
                }
                return@OnNavigationItemSelectedListener true
            }
        }
        return@OnNavigationItemSelectedListener false
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        supportFragmentManager.beginTransaction().add(R.id.activity_main, AllEventsFragment(), "2").commit()
        supportFragmentManager.beginTransaction().add(R.id.activity_main, SignInFragment(), "1").commit()
        val navView: BottomNavigationView = findViewById(R.id.nav_view)
        navView.setOnNavigationItemSelectedListener(onNavigationItemSelectedListener)
        personInEvent = false
    }

その結果、実際にフラグメント間を移動するオプションがなく、フラグメントがオーバーラップします。インターネット上にいくつかの回答があることがわかっていることはすべて実際に試しましたが、どれも私の問題を解決するのに役立ちませんでした. この苛立たしい問題について少しでもお役に立てれば幸いです。

ナビゲーション前: ナビゲーション前:

ナビゲーション後: ナビゲーション後:

4

2 に答える 2