Как перейти от FragmentActivity к Activity (KOTLIN) - PullRequest
0 голосов
/ 04 августа 2020

Я создаю приложение для проверки журнала шины, однако в конечном итоге я столкнулся с проблемой, когда пришло время выходить из системы. Проблема: кнопка выхода из системы находится внутри фрагмента, и я хочу создать слушателя, посредством которого по завершении выхода процесс направляет меня обратно к основному действию

class PeopleFragment : Fragment() {

private lateinit var auth: FirebaseAuth

override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?,
    savedInstanceState: Bundle?
): View? {
    // Inflate the layout for this fragment
    val view = inflater.inflate(R.layout.fragment_people, container, false)

    auth = FirebaseAuth.getInstance()

    view.apply {
        signoutbutton.setOnClickListener {
            FirebaseAuth.getInstance()
                .signOut()

        }

    }

    return view
}

}

Ниже файл Activity для Activity, который я намереваюсь направить:

class LogInActivity : AppCompatActivity() {

private lateinit var auth: FirebaseAuth

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(activity_log_in)

    auth = FirebaseAuth.getInstance()
    loginbutton.setOnClickListener {
        doLogin()
    }

    tosignupTV.setOnClickListener {
        startActivity(Intent(this, SignUpActivity::class.java))
        finish()
    }
}
private fun   doLogin() {
    if (loginEnail.text.toString().isEmpty()) {
        loginEnail.error = "Please enter email"
        loginEnail.requestFocus()
        return
    }

    if (!Patterns.EMAIL_ADDRESS.matcher(loginEnail.text.toString()).matches()) {
        loginEnail.error = "Please enter valid email"
        loginEnail.requestFocus()
        return
    }

    if (loginPassword.text.toString().isEmpty()) {
        loginPassword.error = "Please enter password"
        loginPassword.requestFocus()
        return
    }

    auth.signInWithEmailAndPassword( loginEnail.text.toString(), loginPassword.text.toString())
        .addOnCompleteListener(this) { task ->
            if (task.isSuccessful) {
                val user = auth.currentUser
                updateUI(user)
            } else {

                Toast.makeText(baseContext, "login failed.",
                    Toast.LENGTH_SHORT).show()
                updateUI(null)

            }


        }

}
public override fun onStart() {
    super.onStart()
    // Check if user is signed in (non-null) and update UI accordingly.
    val currentUser = auth.currentUser
    updateUI(currentUser)
}

private fun  updateUI(currentUser: FirebaseUser?){
    if (currentUser != null) {
        startActivity(Intent(this, MainActivity::class.java))
        finish()
    }else{
        Toast.makeText(
            baseContext, "Please verify your email address.",
            Toast.LENGTH_SHORT
        ).show()
    }
}

}

это код основного действия, содержащего все фрагменты:

class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    val homefragment = HomeFragment()
    val peoplefragment = PeopleFragment()
    val myaccountfragment =MyAccountFragment()

    makeCurrentFragment( homefragment)

    navvbarr.setOnNavigationItemSelectedListener {
        when(it.itemId) {
            R.id.navigation_home ->makeCurrentFragment(homefragment)
            R.id.navigation_people ->makeCurrentFragment(peoplefragment)
            R.id.navigation_my_account ->makeCurrentFragment(myaccountfragment)
        }

        true
    }
}
private fun makeCurrentFragment(fragment: Fragment) =
    supportFragmentManager.beginTransaction().apply {
        replace(R.id.fragment_layout, fragment)
        commit()
    }

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...