java - 意图中消失的字符串
问题描述
我的应用程序发生了一些奇怪的事情。我正在尝试通过执行以下操作通过广播发送字符串:
第一步(发送):
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
字段中得到一个空值。此外,如果我使用调试器并检查与第二步相关的意图,我会得到:
intent -> mExtras -> mMap -> value[0] -> name: "hello_world_2019"
我对正在发生的事情感到困惑。该abc
字段不应该为空,但在这种情况下是这样。
如何填充上述字段,使其不为 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);
}
推荐阅读
- python - 如何在 python 上获取 selenium web 驱动程序以在下一页的 css 选择器上查找元素?
- javascript - 使用 Selenium/Python 循环浏览一系列页面 (WebElement)
- angular - fxLayout 不工作,任何解决此问题的建议
- python - 安装了 Windows 10 virtualenv 和 virtualenvwrapper-win,virtualenv 工作正常,包装器没那么多
- python - Webcrawler:在mac上使用Python3从数组中提取字符串
- mongodb - 为什么 MongoDB 的 find_and_modify() 过滤器参数中的(数组)字段/值对之一被忽略?
- flutter - Flutter - 有没有办法通过应用程序使手机静音?
- java - Apache Spark + Java:ExpressionEncoder 中的“java.lang.AssertionError:断言失败”
- javascript - 访问添加功能(Javascript)
- swift - 如何检查运算结果是否等于整数?