2010-10-11 12 views
40

Sto provando a passare i dati tra due attività che si trovano all'interno delle schede. Sto cercando di usare sendBroadcast. Con i punti di interruzione impostati, non raggiungo mai l'OnReceive.Come inviare e ricevere messaggi broadcast

manifestare:

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

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

Mittente attività:

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

Attività Reciever:

@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); 
    } 
} 
+0

Metti tutto in un'unica attività anziché utilizzare attività separate per le schede e non dovrai più provare a utilizzare le trasmissioni per comunicare tra loro. – CommonsWare

risposta

35

ho avuto lo stesso problema come voi, ma ho capito:

Rimuovere l'ingresso Filtro tenda dal manifesto e cambiano

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

per

Intent intent=new Intent();

Speranza che aiuta!

7

Si prega di utilizzare

intent.getStringExtra(""); 

e

new Intent(); 

lavorato per me.

+0

Grazie per il suggerimento con il costruttore vuoto, sono quasi diventato matto .. –

Problemi correlati