我一直試圖弄清楚這一點。我看到很多開發人員和 youtuber(教程)說我們應該使用盡可能少的活動,以便更快、更高效、資源更少的代碼/應用程式。我想知道是否有一種方法可以僅使用用于登錄和注冊的 MainActivity 以及用于在它們之間導航的片段來創建登錄和注冊。
或者
我們是否需要至少 2 個或更多活動來處理該程序(登錄和注冊)?
示例:1 項登錄活動和 1 項注冊活動。
感謝并歡迎有關此主題的任何答案!
uj5u.com熱心網友回復:
從理論上講,您可以讓整個應用程式在單個 Activity 上運行,并為所有頁面使用 Fragments。
每個片段在活動中都有自己的生命周期。
MainActivity 看起來像這樣
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
loadFragment(2)
}
public fun loadFragment(page: Int){
if(page == 1){
// load login
val manager = supportFragmentManager.beginTransaction()
manager.replace(R.id.fragment_holder, LoginFragment()).commit()
}else{
// load register
val manager = supportFragmentManager.beginTransaction()
manager.replace(R.id.fragment_holder, LoginFragment()).commit()
}
}
}
LoginFragment 看起來像這樣
class LoginFragment : Fragment() {
lateinit var myButton: Button
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
val view = inflater.inflate(R.layout.fragment_login, container, false)
myButton = view.findViewById(R.id.my_button)
myButton.apply {
setOnClickListener { toRegister() }
}
return view;
}
fun toRegister(){
// replace the fragment in main activity with register fragment
(requireActivity() as MainActivity).loadFragment(1)
}
}
RegisterFragment 看起來像這樣
class RegisterFragment : Fragment() {
lateinit var mButton: Button
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
val view = inflater.inflate(R.layout.fragment_register, container, false)
mButton = view.findViewById(R.id.my_button)
mButton.apply {
setOnClickListener { toLogin() }
}
return view;
}
fun toLogin(){
// replacing the fragment in the main activity with the login fragment
(requireActivity() as MainActivity).loadFragment(1)
}
}
基本上,我們通過呼叫 loadfragment 來替換 Activity 中顯示的 Fragment。 這個邏輯可以根據需要應用于盡可能多的片段。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/490327.html
