Как отправить и получить широковещательное сообщение - PullRequest
46 голосов
/ 11 октября 2010

Я пытаюсь передать данные между двумя действиями, которые находятся внутри вкладок. Я пытаюсь использовать sendBroadcast(). С установленными точками останова я никогда не достигну onReceive().

Манифест:

<activity
    android:name=".WebResults"
    android:label="@string/app_name">

    <intent-filter>
        <action android:name="com.toxy.LOAD_URL" />
    </intent-filter>         
</activity>

Активность Отправитель:

Intent intent=new Intent(getApplicationContext(),WebResults.class);
intent.setAction("com.toxy.LOAD_URL");
intent.putExtra("url",uri.toString());
sendBroadcast(intent);

Получатель активности:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);    
    IntentFilter filter = new IntentFilter("com.toxy.LOAD_URL");
    this.registerReceiver(new Receiver(), filter);
}

private class Receiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context arg0, Intent arg1) {
        String url = arg1.getExtras().getString("url");
        WebView webview =(WebView)findViewById(R.id.webView);
        webview.loadUrl(url);
    }
}

Ответы [ 2 ]

38 голосов
/ 04 апреля 2011

У меня была такая же проблема, как и у вас, но я понял:

Удалите фильтр намерений из манифеста и измените

Intent intent=new Intent(getApplicationContext(),WebResults.class);

для

Intent intent=new Intent();

Надеюсь, это поможет!

7 голосов
/ 04 января 2012

Пожалуйста, используйте

intent.getStringExtra("");

и

new Intent();

Работали для меня.

...