簡體   English   中英

從擴展Service的類更新MainActivity的textview

[英]Update textview of MainActivity from class that extends Service

我正在嘗試創建一個與藍牙低功耗模塊通信的android應用。 我能夠連接到模塊,讀取數據等等。 但是問題是我不知道如何從擴展Service的類(正在與BLE進行整個連接的類)中更新textview。 我知道這里有BILLION甚至更多這樣的帖子,但請相信我,我嘗試過。

這是MainActivity: http : //pastebin.com/6yaP0dYM

這是擴展服務的類: http : //pastebin.com/cYuAUina

如果有人可以為我提供一些解決我的問題的技巧,那就不勝枚舉了!

創建廣播接收器並在服務中廣播它。 如果您的活動進行了,請注冊接收者,並在onReceive()中更新UI。

接收者應該在活動中...

下面是工作代碼

https://stackoverflow.com/a/14695943/1403112

您可以通過廣播接收器獲取值……如下所示,首先創建自己的IntentFilter,

Intent intentFilter=new IntentFilter();
intentFilter.addAction("YOUR_INTENT_FILTER");

然后將內部類BroadcastReceiver創建為

  private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
    /** Receives the broadcast that has been fired */
    @Override
    public void onReceive(Context context, Intent intent) {
        if(intent.getAction()=="YOUR_INTENT_FILTER"){
           //HERE YOU WILL GET VALUES FROM BROADCAST THROUGH INTENT EDIT YOUR TEXTVIEW///////////
           String receivedValue=intent.getStringExtra("KEY");
        }
    }
};

現在,在onResume()中將您的廣播接收器注冊為,

registerReceiver(broadcastReceiver, intentFilter);

最后,在onDestroy()取消注冊BroadcastReceiver為,

unregisterReceiver(broadcastReceiver);

現在最重要的部分...您需要從任何需要發送值的地方觸發廣播.....這樣做,

Intent i=new Intent();
i.setAction("YOUR_INTENT_FILTER");
i.putExtra("KEY", "YOUR_VALUE");
sendBroadcast(i);

....歡呼:)

暫無
暫無

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

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