簡體   English   中英

如何從BroadcastReceiver隱藏和顯示MainActivity上的視圖

[英]How can I hide and show views on a MainActivity from a BroadcastReceiver

所以我的BroadcastREceiver遇到錯誤...接收器正在運行並檢測網絡的變化..一旦添加可見性,它就會消失...

罐頭化的地方是警告消息中可見性的變化

 val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
        val networkInfo = connectivityManager.activeNetworkInfo
        if (networkInfo != null && networkInfo.detailedState == NetworkInfo.DetailedState.CONNECTED) {
            Log.d("Network Connected","NC is connected")
                MainActivity().warning_message.visibility = View.INVISIBLE
            MainActivity().isConnected = true
        } else if (networkInfo != null) {
            val state = networkInfo.detailedState
            Log.d("NetworkReceiver", state.name)
        } else {
            MainActivity().warning_message.visibility = View.VISIBLE
            MainActivity().isConnected = false
            Log.d("Network Connected","NC")
        }

    }

警告消息只是:

 <FrameLayout
        android:id="@+id/warning_message"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:visibility="invisible"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/top_toolbar">

在主要活動布局中。

我收到的錯誤是:進程:com.example.user.appname,PID:19972

java.lang.RuntimeException:接收com.example.user.appname.ConnectionReceiver@531d646中的廣播意圖{act = android.net.conn.CONNECTIVITY_CHANGE flg = 0x4000010(has extras)}時出錯

沒有關於原因的特定錯誤消息。

不要直接從廣播接收機調用MainActivity。 使用事件總線,並從廣播接收器向事件發布事件。 我已經在這里回答了像您這樣的問題,在這里我演示了(大體上是復制並粘貼我在greenrobot的github上閱讀的內容)如何做到這一點。 現在,我知道您正在使用Kotlin,因此您可以通過閱讀this結束Greerobot事件總線的安裝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM