android:android studio 对java/kotlin做互相转换

一,java转kotlin

code->Convert Java File to Kotlin File

如图:

弹出提示,需要在项目中配置kotlin

确认

提示一些需要修正

二,一个例子:

package com.example.okdemo1.activity

import android.os.Bundle
import android.util.Log
import android.view.MenuItem
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.Fragment
import androidx.viewpager2.widget.ViewPager2
import androidx.viewpager2.widget.ViewPager2.OnPageChangeCallback
import com.example.okdemo1.R
import com.example.okdemo1.adapter.FragAdapter
import com.example.okdemo1.fragment.Cate1Fragment
import com.example.okdemo1.fragment.Cate2Fragment
import com.example.okdemo1.fragment.Cate3Fragment
import com.google.android.material.bottomnavigation.BottomNavigationView
import com.google.android.material.navigation.NavigationBarView

class Bottom2Activity : AppCompatActivity() {
    private val fragmentList: MutableList<Fragment?> = ArrayList<Fragment?>() //fragment的列表
    private var vp_content: ViewPager2? = null //viewpager2

    private var bottomNavigationView: BottomNavigationView? = null //底部导航栏

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        this.enableEdgeToEdge()
        setContentView(R.layout.activity_bottom2)

        //填充viewpager2的内容

        //添加fragment到列表
        fragmentList.add(Cate1Fragment())
        fragmentList.add(Cate2Fragment())
        fragmentList.add(Cate3Fragment())
        //创建adapter
        val viewPagerAdapter = FragAdapter(this, fragmentList) //创建适配器对象

        //得到viewpager,并为它设置adapter
        vp_content = findViewById<ViewPager2>(R.id.viewpager2bottom)
        vp_content!!.setAdapter(viewPagerAdapter) // 设置翻页视图的适配器
        vp_content!!.setCurrentItem(0)

        bottomNavigationView = findViewById<BottomNavigationView>(R.id.nav_view)
        //底部导航栏的处理
        //重点 设置 bottomNavigationView 的item 的点击事件 设置viewPager2的联动
        bottomNavigationView!!.setOnItemSelectedListener(object :
            NavigationBarView.OnItemSelectedListener {
            override fun onNavigationItemSelected(item: MenuItem): Boolean {
                val itemId = item.getItemId()
                Log.d("click", "当前点击了item:" + itemId)
                if (itemId == R.id.navigation_home) {
                    // 处理逻辑
                    vp_content!!.setCurrentItem(0)
                } else if (itemId == R.id.navigation_dashboard) {
                    // 其他逻辑
                    vp_content!!.setCurrentItem(1)
                } else {
                    // 默认情况
                    vp_content!!.setCurrentItem(2)
                }
                return true
            }
        })


        //重点 实现viewpager2滑动的时候 联动 bottomNavigationView的selectedItem
        vp_content!!.registerOnPageChangeCallback(object : OnPageChangeCallback() {
            override fun onPageSelected(position: Int) {
                super.onPageSelected(position)
                when (position) {
                    0 -> bottomNavigationView!!.setSelectedItemId(R.id.navigation_home)
                    1 -> bottomNavigationView!!.setSelectedItemId(R.id.navigation_dashboard)
                    2 -> bottomNavigationView!!.setSelectedItemId(R.id.navigation_notifications)
                }
            }
        })
    }
}

从java转换后可以正常运行

posted @ 2025-06-02 12:27  刘宏缔的架构森林  阅读(234)  评论(0)    收藏  举报