Исчезающая строка в намерении - PullRequest
0 голосов
/ 18 декабря 2018

У меня что-то странное происходит с моим приложением.Я пытаюсь отправить строку через Broadcast, выполнив следующие действия:

1-й шаг (отправка):

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

2-й шаг (получение):

       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 не должно быть нулевым, но оно в этом случае.

Как я могу заполнить вышеупомянутое поле, чтобы оно не было нулевым?

1 Ответ

0 голосов
/ 18 декабря 2018

Пожалуйста, объясните, что именно вы пытаетесь сделать, если вы хотите отправить данные из одного занятия другому, чем мой друг, это не правильный способ сделать это.

Если вы хотите отправить трансляциюи получите это где-то внутри вашего кода, чем нужно выполнить следующие шаги:

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);
}
...