如何广播变量值并接收它?

时间:2012-02-27 10:26:10

标签: android broadcastreceiver broadcast

我正在创建一个应用程序,我想在按钮点击时广播变量值。 同时我想在其他活动中收到此值并显示它。 我该怎么办呢?

4 个答案:

答案 0 :(得分:1)

选项1: 在发送活动中创建自定义意图(例如:CurrentActivity):

public static final String RESTART_CHAT_POLLING_INTENT = "com.cleeqa.android.chat.restart.intent";

播放它:

Intent i = new Intent();
i.setAction(RESTART_CHAT_POLLING_INTENT );
mContext.sendBroadcast(i);

在您要接收的活动中注册broadcastReceiver(NewActivity):

BroadcastReceiver myReceiver = new MyBroadcastReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction(CurrentActivity.RESTART_CHAT_POLLING_INTENT);
registerReceiver(myReceiver, filter);

接收广播(也在NewActivity中):

private class MyBroadcastReceiver extends BroadcastReceiver {

        @Override
        public void onReceive(Context context, Intent intent) {
            if (intent.getAction().equals(CurrentActivity.RESTART_CHAT_POLLING_INTENT)) {

                //DO WHAT YOU WANT

            }
    }

选项2(无需广播接收器): 的onClick:

Intent intent = new Intent(CurrentActivity.this, NewActivity.class);
intent.putExtra("PARAM", parameter);
startActivity(intent);

要接收的活动的onCreate / onStart(NewActivity):

Bundle extras = getIntent().getExtras();
        if (extras != null) {
            parameter = extras.getString("PARAM");
        }

答案 1 :(得分:1)

您的应用程序是否有必要广播变量?如果您只是想将当前活动中的变量传递给新活动,请通过调用startActivityForResult从当前启动新活动,并将该变量作为参数传递。

如果您不希望新活动将结果发送回当前活动,请使用startActivity

答案 2 :(得分:1)

我认为使用intent.putExtra("PARAM", parameter);传递它并使用getExtras()阅读它更容易和适合他需要做的事情!

答案 3 :(得分:1)

在我看来,你可以使用一个全局变量,可以跨活动使用。(还回答一些未提出的问题;)

同样,你可以扩展android.app.Application class,

  

需要维护全局应用程序状态的基类。您可以通过在AndroidManifest.xml的标记中指定其名称来提供自己的实现,这将导致在创建应用程序/包的进程时为您实例化该类。


来自Another question

的示例
public class MyApplication extends Application {

    private String someVariable;

    public String getSomeVariable() {
        return someVariable;
    }

    public void setSomeVariable(String someVariable) {
        this.someVariable = someVariable;
    }
}

然后在您的活动中,您可以像这样获取和设置变量:

// set
((MyApplication) this.getApplication()).setSomeVariable("foo");

// get
String s = ((MyApplication) this.getApplication()).getSomeVariable();

如示例中所示,设置您的变量来自一个活动(或按钮点击任何内容),获取该值另一个活动。