我想利用广播在activity之间传递数据(不是直接用intent传递bundle),代码如下:
MainActivity:
public class MainActivity extends Activity{
private Button mButton;
@override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mButton = (Button)findViewById(R.id.button);
mButton.setOnClickListenner(new OnClickListener(){
@override
public void onClick(View v){
startActivity(new Intent(MainActivity.this, SecondActivity.class));
Intent broadIntent = new Intent("com.example.broadcasttest");
broadIntent.putExtra("position", 3);
sendBroadcast(broadIntent);
}
});
}
}
SecondActivity:
public class SecondActivity extends Activity{
private int position;
@override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
IntenFilter filter = new IntenFilter("com.example.broadcasttest");
registerReceiver(receiver, filter);
}
BroadcastReceiver receiver = new BroadcastReceiver(){
@override
public void OnReceive(Context context, Intent intent){
position = intent.getIntExtra("position", 0);
Log.e("","position-->"+position);
}
}
@override
protected void onDestroy(){
super.OnDestroy();
unRegisterReceiver(receiver);
}
}
广播接收不到,请问是什么问题,谢谢。
startActivity(new Intent(MainActivity.this, SecondActivity.class));//SecondActivity还没初始化完成,这是异步过程,不是同步,执行下面语句的时候还没初始化完成
Intent broadIntent = new Intent("com.example.broadcasttest");
broadIntent.putExtra("position", 3);
sendBroadcast(broadIntent);
Intent broadIntent = new Intent("com.example.broadcasttest");
broadIntent.putExtra("position", 3);
sendBroadcast(broadIntent);
startActivity(new Intent(MainActivity.this, SecondActivity.class));
这样子改就好了
改过了,将startActivity(new Intent(MainActivity.this, SecondActivity.class));放在后面还是收不到。。
最好还是打日志看看,广播注册成功了没? 有没有发送广播,有没有接收到广播,到底是广播出了问题还是你的数据没有处理好日志打的详细一点就能看出来的