web-dev-qa-db-fra.com

Comment envoyer et recevoir un message diffusé

J'essaie de transmettre des données entre deux activités qui se trouvent à l'intérieur des onglets. J'essaie d'utiliser sendBroadcast(). Avec des points d'arrêt définis, je n'atteins jamais onReceive().

Manifeste:

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

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

Expéditeur de l'activité:

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

Récepteur d'activité:

@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);
    }
}
46
Yack

J'avais le même problème que toi, mais j'ai compris:

Supprimez le filtre d'intention du manifeste et modifiez

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

for

Intent intent=new Intent();

J'espère que ça aide!

38
Paulo Cesar

Veuillez utiliser

intent.getStringExtra("");

et

new Intent();

A travaillé pour moi.

7
Abdul