如何通过意图从服务向我的主要活动发送一个双精度值,然后将此值设置为主要活动中按钮的文本?我尝试了Double double = Double.parseDouble(""+intent.getExtras().get("TEXT"));
。这在模拟器中有效,但是在我的实际电话上,程序崩溃了。
每次在服务中更新locationManager时都会调用它:
Intent i = new Intent("update");
i.putExtra("TEXT", String.format("%f" ,double));
sendBroadcast(i);
这是接收部分:
protected void onResume() {
super.onResume();
if(broadcastReceiver == null) {
broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String receivedVal;//I want this to be a double instead
receivedVal = (String) intent.getExtras().get("TEXT");
Btn.setText(""+receivedVal);
}
};
}
registerReceiver(broadcastReceiver, new IntentFilter("update"));
}
您可以使用putExtra()方法直接在意图内发送一个双精度值并传递一个双精度值(https://developer.android.com/reference/android/content/Intent.html#putExtra(java.lang.String,%20double))
要取回值,可以使用getDoubleExtra()方法(https://developer.android.com/reference/android/content/Intent.html#getDoubleExtra(java.lang.String,%20double))