2015-11-23 76 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现在显示更新的答案。 –