Android KOTLIN-如何将文本视图和按钮设置从活动设置为片段

Android KOTLIN-如何将文本视图和按钮设置从活动设置为片段,android,android-fragments,kotlin,Android,Android Fragments,Kotlin,我是Android新手,尤其是Kotlin开发 如何从标题中,我试图理解如何实现这一点: 我有一个带有一些按钮和文本视图的活动。我想实现一个隐藏的片段,在UI上单击5次后打开。碎片工作看起来像是活动。我能够正确地打开片段并正确地设置布局。我不知道如何将按钮活动设置从活动替换为片段。我对文本视图也有同样的问题。我怎样才能做到呢? 提前谢谢 此处活动Kotlin是打开片段的一部分: override fun onTouchEvent(event: MotionEvent): Boolean {

我是Android新手,尤其是Kotlin开发

如何从标题中,我试图理解如何实现这一点:
我有一个带有一些按钮和文本视图的活动。我想实现一个隐藏的片段,在UI上单击5次后打开。碎片工作看起来像是活动。我能够正确地打开片段并正确地设置布局。我不知道如何将按钮活动设置从活动替换为片段。我对文本视图也有同样的问题。我怎样才能做到呢? 提前谢谢

此处活动Kotlin是打开片段的一部分:

override fun onTouchEvent(event: MotionEvent): Boolean {
        var eventaction = event.getAction()
        if (eventaction == MotionEvent.ACTION_UP) {

            //get system current milliseconds
            var time = System.currentTimeMillis()


            //if it is the first time, or if it has been more than 3 seconds since the first tap ( so it is like a new try), we reset everything
            if (startMillis == 0L || (time-startMillis> 3000) ) {
                startMillis=time
                count=1
            }

            //it is not the first, and it has been  less than 3 seconds since the first
            else{ //  time-startMillis< 3000
                count++
            }

            if (count==5) { 

//            Log.d("tag","start hidden layout")

                // Get the text fragment instance
                val textFragment = MyFragment()

                val mytostring =board_status_tv.toString()
                val mArgs = Bundle()
                mArgs.putString(BOARDSTATE, mytostring)

                textFragment.setArguments(mArgs)


                // Get the support fragment manager instance
                val manager = supportFragmentManager

                // Begin the fragment transition using support fragment manager
                val transaction = manager.beginTransaction()

                // Replace the fragment on container
                transaction.replace(R.id.fragment_container,textFragment)
                transaction.addToBackStack(null)
                // Finishing the transition
                transaction.commit()



            }
            return true
        }
        return false

    }
覆盖事件(事件:MotionEvent):布尔值{
var eventaction=event.getAction()
if(eventaction==MotionEvent.ACTION\u UP){
//获取系统当前毫秒数
var time=System.currentTimeMillis()
//如果这是第一次,或者自第一次点击以来已经超过3秒(因此这就像一次新的尝试),我们将重置所有内容
如果(开始毫米==0L | |(时间开始毫米>3000)){
startMillis=时间
计数=1
}
//这不是第一次,而且距离第一次还不到3秒
否则{//时间开始数<3000
计数++
}
如果(计数=5){
//Log.d(“标记”,“开始隐藏布局”)
//获取文本片段实例
val textFragment=MyFragment()
val mytostring=board_status_tv.toString()
val mArgs=Bundle()
mArgs.putString(BOARDSTATE、mytostring)
textFragment.setArguments(mArgs)
//获取支持片段管理器实例
val manager=supportFragmentManager
//使用支持片段管理器开始片段转换
val事务=manager.beginTransaction()
//替换容器上的片段
事务.replace(R.id.fragment\u容器,textFragment)
transaction.addToBackStack(空)
//完成过渡
commit()事务
}
返回真值
}
返回错误
}
片段Kotlin类:

class MyFragment : Fragment(){
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        val parentViewGroup = linearLayout
        parentViewGroup?.removeAllViews()


    }

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

        // Get the text view widget reference from custom layout
        val tv = view.findViewById<TextView>(R.id.text_view)
//        val tv1 = view.findViewById<TextView>(R.id.board_status_tv1)




        // Set a click listener for text view object
        tv.setOnClickListener{
            // Change the text color
            tv.setTextColor(Color.RED)

            // Show click confirmation
            Toast.makeText(view.context,"TextView clicked.",Toast.LENGTH_SHORT).show()
        }

        // Return the fragment view/layout
        return view
    }

    override fun onPause() {
        super.onPause()
    }

    override fun onAttach(context: Context?) {
        super.onAttach(context)
    }

    override fun onDestroy() {
        super.onDestroy()
    }

    override fun onDetach() {
        super.onDetach()
    }

    override fun onStart() {
        super.onStart()
    }

    override fun onStop() {
        super.onStop()
    }
}
classmyfragment:Fragment(){
重写创建时的乐趣(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
val parentViewGroup=linearLayout
parentViewGroup?.removeAllViews()
}
覆盖创建视图(充气机:布局充气机,容器:ViewGroup?,savedInstanceState:Bundle?):视图{
//获取此片段布局的自定义视图
val view=充气机!!.充气(右布局,我自己的碎片,容器,false)
//从自定义布局获取文本视图小部件引用
val tv=view.findviewbyd(R.id.text\u视图)
//val tv1=view.findViewById(R.id.board_status_tv1)
//为文本视图对象设置单击侦听器
tv.setOnClickListener{
//更改文本颜色
tv.setTextColor(Color.RED)
//显示单击确认
Toast.makeText(view.context,“TextView已单击)”,Toast.LENGTH\u SHORT.show()
}
//返回片段视图/布局
返回视图
}
覆盖暂停(){
super.onPause()
}
重写转速表(上下文:上下文?){
super.onAttach(上下文)
}
重写onDestroy(){
super.ondestory()
}
覆盖连接(){
super.onDetach()
}
覆盖有趣的onStart(){
super.onStart()
}
覆盖桌面上的乐趣(){
super.onStop()
}
}

请注意,在将文本转换为字符串之前,您需要获取文本,如第二行中的文本

board_status_tv.getText()。toString()


希望这能解决您的问题。

您到底想做什么,我无法解决您的问题,为什么您不从fragment内部的bundle请求数据?我使用了“var-dataBundle:bundle?=this.arguments tv_one.text=dataBundle!!.getString(BOARDSTATE)”在我的片段中设置活动的文本视图数据,但它设置了一个文本:android.suppert.v7……app:id/board_status…
mArgs
?那不是,是的,很好。那么,你对按钮有什么建议吗?你对按钮也面临同样的问题吗?我不知道如何将按钮动作(在活动中)从活动替换为片段。对不起,我的朋友,我无法理解确切的问题,你能详细说明一下吗?我仍然无法理解,但您可以像在textview中一样请求按钮文本和设置按钮文本,还可以在任何地方多次使用setOnClickListener函数。看看这里。
 val textFragment = MyFragment()
 val mytostring = board_status_tv.getText().toString()
 val mArgs = Bundle()
 mArgs.putString(BOARDSTATE, mytostring)
 textFragment.setArguments(mArgs)