![](/img/trans.png)
[英]Modify variable from MainActivity in my Service class then update the TextView with variable
[英]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。
接收者應該在活動中...
下面是工作代碼
您可以通過廣播接收器獲取值……如下所示,首先創建自己的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.