我正在创建一个应用程序,我想在按钮点击时广播变量值。 同时我想在其他活动中收到此值并显示它。 我该怎么办呢?
答案 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的标记中指定其名称来提供自己的实现,这将导致在创建应用程序/包的进程时为您实例化该类。
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();
如示例中所示,设置您的变量来自一个活动(或按钮点击任何内容),获取该值另一个活动。