有意消失的字符串



我的应用程序发生了一些奇怪的事情。我正在尝试通过广播发送字符串,方法如下:

第一步(发送(:

Intent intent = new Intent("INFO");
intent.putExtra("INFO_VALUE", "hello_world_2019");

第二步(接收(:

if ("INFO".equals(intent.getAction())) {
String abc = intent.getStringExtra("INFO_VALUE");
Log.i(TAG, "" + abc);
}

在执行前面的步骤时,我在abc字段中获得了一个null。此外,如果我使用调试器并检查与第二步相关的意图,我会得到:

intent -> mExtras -> mMap -> value[0] -> name: "hello_world_2019"

我对发生的事情感到困惑。abc字段不应该是null,但在这种情况下是null。

如何填充上述字段,使其不为空?

请解释一下你到底想做什么,如果你想把数据从一个活动发送给我朋友以外的其他人,这不是正确的方法。

如果你想在代码中的某个地方发送广播并接收,那么你需要遵循以下步骤:

ReceiverActivity.java

@Override 
public void onCreate(Bundle savedInstanceState) {
... 
// Register to receive messages. 
// We are registering an observer (mMessageReceiver) to receive Intents 
// with actions named "custom-event-name". 
LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver,
new IntentFilter("INFO"));
} 
// Our handler for received Intents. This will be called whenever an Intent 
// with an action named "custom-event-name" is broadcasted. 
private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
@Override 
public void onReceive(Context context, Intent intent) {
// Get extra data included in the Intent 
String message = intent.getStringExtra("message");
Log.d("receiver", "Got message: " + message);
} 
}; 
@Override 
protected void onDestroy() { 
// Unregister since the activity is about to be closed. 
LocalBroadcastManager.getInstance(this).unregisterReceiver(mMessageReceiver);
super.onDestroy(); 
} 

SenderActivity.java

private void sendMessage() { 
Log.d("sender", "Broadcasting message");
Intent intent = new Intent("INFO");
// You can also include some extra data. 
intent.putExtra("message", "Message goes here!");
LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
}

最新更新