很多时候我们都会遇到不兼容的问题或者数据不能同步更新的问题从而就出现来一个叫bug的东西,使用广播来进行状态值传递,还有一种情况就是这个页面不进行初始化就不能进行数据同步这样数据不同步的话就会出现bug,接下来就是使用广播传值,判断比较这个值进行页面跳转,
首先是传递值的页面
我们要注意的是虽然不需要在清单文件注册但是需要设置一个action并且接受值与传递的action一定要一致不然会接收不到值
正确例子例如:(传递)
public static final String ACTION ="com.example.casts";
Intent intent = new Intent(ACTION);//这个是传递值的时候
intent.putExtra("msg", "1");
sendBroadcast(intent);
接受值例子:
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(ACTION); //这个ACTION和后面activity的ACTION一样就行,要不然收不到的
registerReceiver(myBroadcastReceive, intentFilter);//注册广播
//广播接收===========
BroadcastReceiver myBroadcastReceive = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.i("广播", "----接收到的是----" + intent.getStringExtra("msg"));
String msg = intent.getStringExtra("msg");
if (msg.equals("1")){
Intent intent1 = new Intent(MainActivity.this,MainActivity2.class);
startActivity(intent1);
Toast.makeText(context, msg+"", Toast.LENGTH_SHORT).show();
}
}
};
可以看出来在接收是进行了获取值,对值进行字符串判断进行跳转
String msg = intent.getStringExtra("msg");
if (msg.equals("1")){
Intent intent1 = new Intent(MainActivity.this,MainActivity2.class);
startActivity(intent1);
Toast.makeText(context, msg+"", Toast.LENGTH_SHORT).show();
findViewById(R.id.cast).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(ACTION);
intent.putExtra("msg", "1");
sendBroadcast(intent);
}
});
对了 千万不要忘记反注册
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(myBroadcastReceive);
}
在这里插入代码片
整体代码
public class MainActivity extends AppCompatActivity {
public static final String ACTION ="com.example.casts";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(ACTION); //这个ACTION和后面activity的ACTION一样就行,要不然收不到的
registerReceiver(myBroadcastReceive, intentFilter);
findViewById(R.id.cast).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(ACTION);
intent.putExtra("msg", "1");
sendBroadcast(intent);
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(myBroadcastReceive);
}
BroadcastReceiver myBroadcastReceive = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.i("广播", "----接收到的是----" + intent.getStringExtra("msg"));
String msg = intent.getStringExtra("msg");
if (msg.equals("1")){
Intent intent1 = new Intent(MainActivity.this,MainActivity2.class);
startActivity(intent1);
Toast.makeText(context, msg+"", Toast.LENGTH_SHORT).show();
}
}
};
}
最后感谢浏览!

5474

被折叠的 条评论
为什么被折叠?



