android 当我使用addToBackStack(null)从Activity的Fragment返回到Activity时遇到了一个问题,Activity的按钮可见性消失了

juzqafwq  于 2023-05-15  发布在  Android
关注(0)|答案(1)|浏览(100)

我正在创建登录注册活动Login and Signup Activity,当我单击登录按钮时,它会将我带到登录片段Login Fragment,当我单击注册按钮时,它会将我带到注册片段Signup Fragment
当我从Activity移动到任何一个片段时,Activity的登录和注册按钮也在片段中可见,因为这两个按钮的setOnClickListener函数中使用了sign_btn.visibility=View.GONElogin_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)
    }

}
vc6uscn9

vc6uscn91#

这是你采取的错误方法,因为主要问题是片段的根视图没有背景颜色,或者它可能是透明的,这就是为什么按钮在片段中可见,你不必这样做。

sign_btn.visibility=View.GONE
login_btn.visibility=View.GONE

您可以在片段中为根视图设置背景。你会看到按钮是不可见的。
希望这对你有用

相关问题