简体   繁体   中英

KOTLIN - How to set TextViews and buttons setting from Activity to fragment

I'm new on Android, in particular on Kotlin development.

How from title, i'm trying to understand how to achieve this: I have an Activity with some buttons and textviews. I would to implement an hidden fragment opened after 5 clicks on UI. That fragment work look like the activity. I'm able to open the fragment properly and set the layout properly. I don't know how to replace buttons activity settings from activity to fragment. I have same problem with the textview. How could I achieve it? Thanks in Advance.

Here Activity Kotlin part that open fragment:

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

    }

Fragment Kotlin class:

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()
    }
}

Please note that you will need to get Text before converting it to string, like that in second line.

board_status_tv .getText(). toString()

 val textFragment = MyFragment()
 val mytostring = board_status_tv.getText().toString()
 val mArgs = Bundle()
 mArgs.putString(BOARDSTATE, mytostring)
 textFragment.setArguments(mArgs)

Hope this will resolve your problem

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM