你好,我现在做关于安卓广播的问题。现在有如下代码
这是MainActivity的代码
public class MainActivity extends AppCompatActivity {
Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
setContentView(R.layout.activity_main);
btn=findViewById(R.id.btn1);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent=new Intent();
intent.setAction("android.intent.action.s");
intent.putExtra("yes","yes");
MainActivity.this.sendBroadcast(intent);
}
});
}
这是Main2Activity的代码
public class Main2Activity extends AppCompatActivity {
Button btn;
String yes1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
yes1=getIntent().getStringExtra("yes");
Log.e("我的活动","我的活动2");
btn=findViewById(R.id.btn2);
}
}
这是Manifests清单的代码
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapplication">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".Main2Activity">
<intent-filter>
<action android:name="android.intent.action.s">action>
intent-filter>
activity>
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
intent-filter>
activity>
application>
manifest>
当我点击MainActivity的按钮时,发现点击后没有任何反应。这是为什么?
我的要求是
1、MainActivity不能跳转到Main2Activity的界面,不能跳转到Main2Activity的界面
2、MainActivity能执行Main2Activity里面的onCreate方法,能把log打印出来,就是那个“我的活动”,“我的活动2”这几个字能打印出来
3、MainActivity能不跳转,将值传到Main2Activity中,Main2Activity的yes1字符串不能为null或“”,也就是空值或者空字符串。而是能传值,将这个yes字符串传到Main2Activity里面
要求就是以上三点
大家认为应该怎么办?怎么做才可以。
Main2Activity按照下面修改一下应该就可以了,建议需要仔细学习一下 broadcast 的使用,教程有很多。。。
public class Main2Activity extends AppCompatActivity {
Button btn;
String yes1;
MyBroadCastReceiver myBroadCastReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
btn=findViewById(R.id.btn2);
myBroadCastReceiver = new MyBroadCastReceiver();
IntentFilter intentFilter1 = new IntentFilter();
intentFilter1.addAction("android.intent.action.s");
Main2Activity.this.registerReceiver(myBroadCastReceiver, intentFilter1);
}
class MyBroadCastReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
//此处的indent为sendBroadcast发送的Indent
yes1=getIntent().getStringExtra("yes");
Log.e("我的活动","我的活动2");
}
}
}
首先,这里就是一个意图没有啥广播。
其次,好好去理解一下acticity 的生命周期,按照你这个需求应该是要启动一个后台服务,多去学习一下
想让activity2处理广播或者接收传递的参数,必须对activity2进行初始化。不跳转情况下让activity2处理广播。这些都是在activity2已经初始化的情况下,也就是说activity2已经在内存中了
开什么玩笑呢,你Main2Activity没启动,不会触发onCreate