如何使用广播在两个活动之间接收和发送数据

时间:2014-08-28 07:40:53

标签: android android-activity android-broadcast

我有两种不同的活动。

在第一个活动中,我点击一个按钮,然后发送广播。

第二项活动可以接收广播,并进行下一次活动。

如何使用动态注册广播来执行此操作?

4 个答案:

答案 0 :(得分:1)

您不能同时运行多个活动,因此您的BroadcastReceiver必须在this教程中的该类之外。

触发BroadcastReceiver后,您可以使用某些参数启动第二项活动,以便知道您必须触发第二项活动。

然而,另一种可能的解决方案是直接打开按钮点击的第二个活动,你不觉得吗?

答案 1 :(得分:0)

在两个活动之间传递信息的正确方法是使用Intent。 阅读本文 - http://developer.android.com/training/basics/firstapp/starting-activity.html#BuildIntent

Intent intent = new Intent(this, SecondActivity.class);
intent.putExtra(key, value);
startActivity(intent);

在SecondActivity上,您可以获得这样的信息 -

int x = getIntent().getExtras().getInt(key)

您无法使用BroadcastReceiver在活动之间传递变量,因为它们不会在同一时间运行。

答案 2 :(得分:0)

如果要将数据从一个活动广播到另一个活动,只需使用Intent即可。在第二个活动的vapor clean && vapor xcode方法中,创建Intent对象并将广播数据视为额外的意图,在onDestroy类的intent.getExtra()方法上使用onReceive()方法。

了解更多详情: follow this tutorial

答案 3 :(得分:-1)

您需要更改清单文件,您需要添加以下代码

<receiver android:name="MyScheduleReceiver" >
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
            </intent-filter>
        </receiver>
        <receiver android:name="MyStartServiceReceiver" >
        </receiver>

第二件事是发送活动和达到活动

发送:

@Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK ) {
            //do your stuff
            Intent i=new Intent(getApplicationContext(), MainActivity.class);
            startActivity(i);
        }
        return super.onKeyDown(keyCode, event);
    }

接收:

public class MyReceiver extends Activity{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main1);

    }


}