2015-11-23 71 views
-2

我有兩個活動:如何使用一個活動回調的其他活動

FirstActivity(其中還包含List<MapGroup>)我實現我的Interface(GetMaps)。

SecondActivity包含我帶有適配器的地圖列表,我可以在其中選擇或取消選擇地圖。每當我選擇或取消選擇我想更新FirstActivity我的List<MapGroup>:如果我選擇我想添加,如果我取消選擇我想從ArrayList刪除。

我知道一個解決方案:這可以在Android中使用Intent完成。

但我正在尋找一種解決方案,可以自動並行地添加或刪除。

+1

你的代碼在哪裏? – Amy

回答

3

1)利用廣播接收器

當您更改發送任何數據BroadcastReceiver

Intent broadcast = new Intent(); 
broadcast.setAction("UpdateData"); 
sendBroadcast(broadcast); 

對於你所要做的像下面抓接收機。

IntentFilter intentFilter = new IntentFilter(Intent.ACTION_DEFAULT); 
intentFilter.addAction("UpdateData"); 
this.registerReceiver(this.broadcastReceiver, intentFilter); 

和..

BroadcastReceiver broadcastReceiver = new BroadcastReceiver() { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     if(intent.getAction().equals("UpdateData")){ 
     // Your code goes here. 
     } 
    } 
}; 

註銷接收器,當應用程序被破壞。

@Override 
protected void onDestroy() { 
    super.onDestroy(); 
    unregisterReceiver(broadcastReceiver); 
}; 
使用 Intent

2)。

在您當前的活動中請這樣做。

Intent nextAct = new Intent(CurrentAct.this,NextAct.class); 
nextAct.putExtra("Key",value); 
startActivityForResult(nextAct,1000); 

覆蓋onActivityResult在你當前活動()方法。

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     // TODO Auto-generated method stub 
     super.onActivityResult(requestCode, resultCode, data); 

     if(requestCode == 100 && resultCode == 1000){ 

     } 
} 

在你NextAct你必須設置結果代碼如下圖所示。

setResult(1000); 

實施例:在onBackPress的setResult碼();

@Override 
    public void onBackPressed() { 
     setResult(1000); 
    } 
+0

他明確提到,如果沒有使用意圖,他想實現此功能 – Anjali

+0

@Anjali現在顯示更新的答案。 –