如何在其他活动中使用一个活动回调

时间:2015-11-23 05:26:00

标签: java android

我有两项活动:

FirstActivity(也包含List<MapGroup>)中,我实施了Interface(GetMaps)。

SecondActivity包含带适配器的地图列表,我可以在其中选择或取消选择地图。每当我选择或取消选择时,我想在FirstActivity我的List<MapGroup>更新:如果我选择我想添加,如果我取消选择我想从ArrayList中删除。

我知道一个解决方案:这可以使用android中的Intent来完成。

但我正在寻找一种可以自动并行添加或删除的解决方案。

1 个答案:

答案 0 :(得分:3)

1)使用BroadcastReceiver

更改任何数据时发送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);
};

2)使用Intent

在您当前的活动中,请执行此操作。

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);
    }