Kotlin的main类及fragment

本文探讨了Kotlin编程语言中的主函数(Main)及其在Android开发中的应用,特别是如何在Fragment中使用Kotlin。从创建Main函数到在Fragment中实现功能,文章详细解析了Kotlin在Android应用程序中的核心作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.bawei.moni003.model.base

abstract class BasePresenter<V> {
    var mView:V?=null
}
package com.bawei.moni003.model.base

import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment


abstract class BaseFragment<V,P:BasePresenter<V>> :Fragment() {
    var mPresenter:P?=null
    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        return inflater.inflate(setLayoutId(),container,false)
    }

    abstract fun setLayoutId(): Int

    override fun onActivityCreated(savedInstanceState: Bundle?) {
        super.onActivityCreated(savedInstanceState)
        mPresenter=createPresenter()
        mPresenter?.mView=this as V
        initData()

    }

    abstract fun initData()

    abstract fun createPresenter(): P?

}
package com.bawei.moni003.model.base

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity


abstract class BaseActivity :AppCompatActivity(){
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(setLayoutId())
        initData()
    }

    abstract fun setLayoutId(): Int

    abstract fun initData()
}

Main页面的java

package com.bawei.moni003.view.activity

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.bawei.moni003.R
import com.bawei.moni003.view.fragment.FytFragment
import com.bawei.moni003.view.fragment.RyFragment
import com.bawei.moni003.view.fragment.TjFragment
import com.google.android.material.tabs.TabLayout
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {
    var fytFragment=FytFragment()
    var tjFragment=TjFragment()
    var ryFragment=RyFragment()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        initTop()
        supportFragmentManager.beginTransaction().replace(R.id.frameLayout_id,fytFragment)

    }

    private fun initTop() {
        val titles= arrayOf("放映厅","推荐","热映","预告","说电影")
        for (i in 0..4){
            tabLayout_id.addTab(tabLayout_id.newTab().setText(titles[i]))

        }
        tabLayout_id.addOnTabSelectedListener(object :TabLayout.OnTabSelectedListener{
            override fun onTabReselected(p0: TabLayout.Tab?) {

            }

            override fun onTabUnselected(p0: TabLayout.Tab?) {

            }

            override fun onTabSelected(p0: TabLayout.Tab?) {
                p0?.apply {
                    when(position){
                        0 ->supportFragmentManager.beginTransaction().replace(R.id.frameLayout_id,fytFragment).commit()
                        1 ->supportFragmentManager.beginTransaction().replace(R.id.frameLayout_id,tjFragment).commit()
                        2 ->supportFragmentManager.beginTransaction().replace(R.id.frameLayout_id,ryFragment).commit()
                    }
                }
            }
        })


    }
}

视频播放的java

package com.bawei.moni003.view.activity

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.recyclerview.widget.LinearLayoutManager
import cn.jzvd.Jzvd
import com.bawei.moni003.R
import com.bawei.moni003.model.bean.Playroom
import com.bawei.moni003.view.adapter.PlAdapter
import com.bumptech.glide.Glide
import kotlinx.android.synthetic.main.activity_main2.*
import kotlinx.android.synthetic.main.fragment_fyt.*
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode

class MainActivity2 : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main2)
    }
    @Subscribe(threadMode = ThreadMode.MAIN,sticky = true)
    fun receiver(player:Playroom){
        textView_Name_jzvd.text=player.title
        Glide.with(this).load(player.image).into(jzvdStd_id.posterImageView)
        jzvdStd_id.setUp(player.videourl,player.title)

        recyclerView_PL.layoutManager=LinearLayoutManager(this)
        recyclerView_PL.adapter=PlAdapter(player.comments)

    }

    override fun onStart() {
        super.onStart()
        EventBus.getDefault().register(this)
    }

    override fun onStop() {
        super.onStop()
        EventBus.getDefault().unregister(this)
    }

    override fun onBackPressed() {
        super.onBackPressed()
        if(Jzvd.backPress()){
            return
        }
        super.onBackPressed()
    }

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

}

fragment类

package com.bawei.moni003.view.fragment

import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.LinearLayoutManager
import com.bawei.moni003.R
import com.bawei.moni003.model.http.HttpUtils
import com.bawei.moni003.view.adapter.FytAdapter
import kotlinx.android.synthetic.main.fragment_fyt.*
import kotlinx.coroutines.async
import kotlinx.coroutines.runBlocking


class FytFragment : Fragment() {
    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        return inflater.inflate(R.layout.fragment_fyt,container,false)
    }

    override fun onActivityCreated(savedInstanceState: Bundle?) {
        super.onActivityCreated(savedInstanceState)
        recyclerView_jzvd.layoutManager=LinearLayoutManager(context)
        runBlocking {
            val fyt=async {
                HttpUtils.apiService.getPaly()
            }
            recyclerView_jzvd.adapter=FytAdapter(fyt.await().playroom)
        }
    }
}






package com.bawei.moni003.view.fragment

import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.LinearLayoutManager
import com.bawei.moni003.R
import com.bawei.moni003.model.base.BaseFragment
import com.bawei.moni003.model.bean.Banner
import com.bawei.moni003.model.bean.Hotrecommend
import com.bawei.moni003.model.contact.HotMoiveCotract
import com.bawei.moni003.model.http.HttpUtils
import com.bawei.moni003.view.adapter.JcycAdapter
import com.bawei.moni003.view.adapter.ZzsyAdapter
import com.bawei.moni003.view.presenter.HotMoiveImpl
import com.facebook.drawee.view.SimpleDraweeView
import kotlinx.android.synthetic.main.fragment_tj.*
import kotlinx.coroutines.async
import kotlinx.coroutines.runBlocking

class TjFragment : BaseFragment<HotMoiveCotract.HotMoiveView,HotMoiveImpl>(),HotMoiveCotract.HotMoiveView {
    override fun setLayoutId()=R.layout.fragment_tj



    override fun createPresenter(): HotMoiveImpl? = HotMoiveImpl()
    override fun onSuccess(hotrecommend: List<Hotrecommend>) {
        recyclerView_ZZSY.adapter=ZzsyAdapter(hotrecommend)
    }
    override fun initData() {
        mPresenter?.getHotMoiverData()
        recyclerView_ZZSY.layoutManager=LinearLayoutManager(context,LinearLayoutManager.HORIZONTAL,false)
        recyclerView_JCYC.layoutManager=LinearLayoutManager(context,LinearLayoutManager.HORIZONTAL,false)
        runBlocking {
            val banners=async { HttpUtils.apiService.getBanner()}
            xBanner_TJ.setBannerData(R.layout.banner_item,banners.await().banner)
            xBanner_TJ.loadImage { banner, model, view, position ->
                (view as SimpleDraweeView).setImageURI((model as Banner).image)
            }
            val excell=async {
                HttpUtils.apiService.getExcellent()
            }
            recyclerView_JCYC.adapter=JcycAdapter(excell.await().excellentrepresentation)
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值