我有两个活动:一个是主要的(A),第二个是从A(B)开始的。我用startActivityForResult(intent, id)
开始B。
我知道我可以通过setResult()
方法将结果发送回A,但据我所知,结果不会被发送,直到finish()
被调用。我需要将数据从B发送到A 而不关闭B(甚至在关闭之前几次)。有没有办法实现这个目标?
据我所知,实现这一目标的选择并不多。我可以使用SharedPreferences但是我还需要某种事件来通知A它必须读取一个值!
任何想法都赞赏。
------最终解决方案------
最后,我得到了@ Nathaniel Waggoner
的建议。这就是我的所作所为:
在我的活动中,我声明了BroadcastReceiver
的扩展名:
class ActivityBroadcast extends BroadcastReceiver {
@Override
public void onReceive(final Context context, final Intent intent) {
final String txt2send = intent.getStringExtra("txt2send");
if ((txt2send != null) && (!txt2send.isEmpty())) {
// Do the needed stuff
...
}
}
}
所以现在我在我的类中声明了ActivityBroadcast
实例并初始化它:
private static ActivityBroadcast broadcast_signal;
broadcast_signal = new ActivityBroadcast();
我控制它的方式只是我的Intent触发onReceive方法的方法是将IntentFilter
设置为SENDTXT2SOCK自定义操作,这样:
// CustomActions.SENDJOIN2CHAN is just a constant from a customized public class
// where I define my own constants to not interfere with the "official" ones
registerReceiver(broadcast_signal, new IntentFilter(CustomActions.SENDTXT2SOCK));
这样我就说broadcast_signal
只会注册CustomActions.SENDTXT2SOCK
行为,所以其他任何内容都会被忽略。现在我们只需要将所需活动的信号发送给该接收器:
final Intent intentResult = new Intent(CustomActions.SENDTXT2SOCK);
intentResult.putExtra("txt2send", "blabla");
sendBroadcast(intentResult);
而这一切都像魅力一样!
答案 0 :(得分:2)
答案 1 :(得分:1)