我正在创建登录注册活动Login and Signup Activity,当我单击登录按钮时,它会将我带到登录片段Login Fragment,当我单击注册按钮时,它会将我带到注册片段Signup Fragment
当我从Activity移动到任何一个片段时,Activity的登录和注册按钮也在片段中可见,因为这两个按钮的setOnClickListener函数中使用了sign_btn.visibility=View.GONE
login_btn.visibility=View.GONE
。
但是当我使用addToBackStack(null)从其中一个Fragemnt返回到Activity时,Activity的登录和注册按钮仍然不可见如何在我返回到Activity后看到按钮我使用Kotlin语言主Activity代码
package com.example.myapplication
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.Button
import androidx.fragment.app.Fragment
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
var login_btn=findViewById<Button>(R.id.login)
var sign_btn=findViewById<Button>(R.id.signup)
login_btn.setOnClickListener {
sign_btn.visibility=View.GONE
login_btn.visibility=View.GONE
val loginfragment: Fragment = LoginFragment()
val fragmentTransaction = supportFragmentManager.beginTransaction()
fragmentTransaction.replace(R.id.container, loginfragment).addToBackStack(null).commit()
}
sign_btn.setOnClickListener {
val signupfragment:Fragment=signup()
val fragmentTransaction=supportFragmentManager.beginTransaction()
fragmentTransaction.replace(R.id.container,signupfragment).addToBackStack(null).commit()
sign_btn.visibility=View.GONE
login_btn.visibility=View.GONE
}
}
}
登录碎片码
package com.example.myapplication
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
class LoginFragment : Fragment() {
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_login, container, false)
}
}
注册碎片码
package com.example.myapplication
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
class signup : Fragment() {
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_signup, container, false)
}
}
1条答案
按热度按时间vc6uscn91#
这是你采取的错误方法,因为主要问题是片段的根视图没有背景颜色,或者它可能是透明的,这就是为什么按钮在片段中可见,你不必这样做。
您可以在片段中为根视图设置背景。你会看到按钮是不可见的。
希望这对你有用