最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Kotlin四大組件中的broadcast廣播

 更新時(shí)間:2022年12月05日 17:00:25   作者:go2coding  
Android開發(fā)的四大組件分別是:活動(activity),用于表現(xiàn)功能;服務(wù)(service),后臺運(yùn)行服務(wù),不提供界面呈現(xiàn);廣播接受者(Broadcast Receive),勇于接收廣播;內(nèi)容提供者(Content Provider),支持多個(gè)應(yīng)用中存儲和讀取數(shù)據(jù),相當(dāng)于數(shù)據(jù)庫,本篇著重介紹廣播組件

在上一章中,有個(gè)問題可能大家都沒有注意,Acitivity 在使用startActivityForResult后,可以給另一個(gè)的Acitivity 或者Fragment 進(jìn)行數(shù)據(jù)參數(shù)的傳遞,可以回去也可以回來。但如果中間要進(jìn)行數(shù)據(jù)的交換,使用startActivityForResult 是不能夠做到的。

最常見的一種情況是Acitivity 中啟動 碎片Fragmen 的時(shí)候,可以通過參數(shù)的方式進(jìn)行傳遞,但碎片Fragmen要傳回來數(shù)據(jù),就沒那么容易了。

Android 中,可以使用 Android 中四大組件之一的Broadcast,我們叫他廣播。這一節(jié)的例子就是展示怎么在碎片FragmenAcitivity 中的通訊問題,我們會建立一個(gè)AcitivityFragmen ,在Fragmen 中發(fā)送廣播,Acitivity中接受,這樣就可以達(dá)到雙向交流的目的。

創(chuàng)建Fragmen 碎片

建立起Fragmen 碎片,在Fragmen 中發(fā)送廣播給Acitivity ,讓Acitivity 處理相應(yīng)的廣播命令。

        fun newInstance(position:Int,image_id:Int,desc:String):BroadcastFragment {
            val bundle = Bundle()
            bundle.putInt("position",position)
            bundle.putInt("image_id",image_id)
            bundle.putString("desc",desc)
            val fragment = BroadcastFragment()
            fragment.arguments = bundle
            return fragment
        }

在建立Fragmen 的時(shí)候,Acitivity通過參數(shù)的形式,把數(shù)據(jù)傳遞給Fragmen ,這里就有了一次數(shù)據(jù)參數(shù)的傳遞過程。

主界面中添加ViewPager

我們建立ViewPager 的目的,是這ViewPager 中添加 Fragmen,來模擬 FragmenAcitivity 之間的通信問題。

    <androidx.viewpager.widget.ViewPager
        android:id = "@+id/vp_content"
        android:layout_width="match_parent"
        android:layout_height="550dp">
        <androidx.viewpager.widget.PagerTabStrip
            android:id = "@+id/pts_tab"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
    </androidx.viewpager.widget.ViewPager>

建立起適配器,來加載Fragmen 碎片。

class BroadcastPagerAdapter(fm:FragmentManager,private val goodsList: MutableList<GoodsInfo>):FragmentStatePagerAdapter(fm) {
    override fun getCount(): Int {
        return goodsList.size
    }
    override fun getItem(position: Int): Fragment {
        return BroadcastFragment.newInstance(position,goodsList[position].pic,goodsList[position].desc)
    }
    override fun getPageTitle(position: Int): CharSequence? {
        return goodsList[position].name
    }
}

在主界面中,加載適配器。

        pts_tab.setTextSize(TypedValue.COMPLEX_UNIT_SP,20f)
        vp_content.adapter = BroadcastPagerAdapter(supportFragmentManager,GoodsInfo.defaultList)
        vp_content.currentItem = 0

到這里,界面該有的控件就建立起來。

創(chuàng)建廣播

發(fā)送廣播和傳遞數(shù)據(jù)都是用Intent,先建立起BroadcastReceiver ,

    private var bgChangeReceiver:BgChangeReceiver? = null
    private inner class BgChangeReceiver:BroadcastReceiver(){
        override fun onReceive(p0: Context?, p1: Intent?) {
        }
    }

注冊廣播,

    override fun onStart() {
        super.onStart()
        bgChangeReceiver = BgChangeReceiver()
        val filter = IntentFilter(BroadcastFragment.EVENT)
        activity?.registerReceiver(bgChangeReceiver,filter)
    }
    override fun onStop() {
        activity?.unregisterReceiver(bgChangeReceiver)
        super.onStop()
    }

新建一個(gè)按鈕,來發(fā)送廣播,

        btn_cast.setOnClickListener {
            val intent = Intent(BroadcastFragment.EVENT)
            intent.putExtra("color",1)
            activity?.sendBroadcast(intent)
        }

小結(jié)

Android中四大 組件之一的 Broadcast 這里也簡單接受了下,如果之前有接觸過windows編程的話,你會接觸過sendmessage的函數(shù),其實(shí)他就是一種廣播,跟Android一樣沒有什么兩樣,都是為了組件和組件,界面和界面直接的溝通。

到此這篇關(guān)于Kotlin四大組件中的broadcast廣播的文章就介紹到這了,更多相關(guān)Kotlin broadcast內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

资阳市| 塔城市| 云南省| 安乡县| 即墨市| 方正县| 丹寨县| 仁布县| 东安县| 延庆县| 广丰县| 墨玉县| 双流县| 杭锦后旗| 大埔区| 宜宾县| 乌拉特前旗| 田东县| 通榆县| 灌阳县| 登封市| 张北县| 阿克| 阿合奇县| 梓潼县| 滕州市| 舟曲县| 万山特区| 定日县| 原平市| 霍山县| 石渠县| 澎湖县| 深圳市| 金阳县| 双流县| 饶平县| 邵阳市| 滨州市| 常德市| 建阳市|