概述
假设我们由一个活动FirstActivity,作为主活动,并且这个活动加载了一个布局,该布局上有一个按键名称为Button1,id为button_1
现在,转到这个活动的源码文件上:
public class FirstActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.first_layout);
// 设置布局
// 创建按键,并设置监听
Button button1=(Button)findViewById(R.id.button_1);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// 创建一个发送实例,两个参数分别代表发出者和接收者
Intent intent=new Intent(FirstActivity.this,SecondActivity.class);
String data="Hello second activity";
intent.putExtra("extra_data",data);
// 发送消息操作
//
startActivity(intent); 如果只发送消息,可以使用这个,但是它和下面一句不能同时出现,否则会在SecondActivity销毁后,由创建一次。。。。
startActivityForResult(intent,1);
// 发送消息,激活了SecondActivity,注意这里同时设置了返回时的requestcode
}
});
}
}
/**
* Dispatch incoming result to the correct fragment.
* 接收消息用
* @param requestCode :启动活动时,传入的请求码,就是上面个startActivityForResult的参数1
* @param resultCode 返回参数时的处理结果,对应RESULT_OK
* @param data 返回的参数
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode){
// 先对应请求码
case 1:
if (resultCode==RESULT_OK){
// 根据结果值来确定是否输出
String returnData= data.getStringExtra("return_data");
Toast.makeText(FirstActivity.this,returnData,Toast.LENGTH_SHORT).show();
}
break;
default:
}
}
假设由建立了一个活动SecondActivity,用于接收主活动FirstActivity发送的消息,同时返回给FirstActivity的消息。
public class SecondActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second_layout);
Intent intent=getIntent();
// 获取上一个活动传入的实例
String data=intent.getStringExtra("extra_data");
// 获取数据
Toast.makeText(SecondActivity.this,data,Toast.LENGTH_SHORT).show();
// 新建按键并设置监听
Button button2=(Button)findViewById(R.id.button_2);
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent=new Intent();
// 在这里又新建了一个实例,用于返回数据
intent.putExtra("return_data","hello first activity"); // 设置返回的数据标识与返回数据
setResult(RESULT_OK,intent);
// 设置返回码与实例
finish();
// 直接终止这个活动
}
});
}
/**
* Take care of popping the fragment back stack or finishing the activity
* as appropriate.
*/
@Override
public void onBackPressed() {
super.onBackPressed();
Intent intent=new Intent();
intent.putExtra("return_data","hello first activity");
setResult(RESULT_OK,intent);
finish();
}
}
最后以图片的形式说明消息传递的机制:
最后
以上就是开朗黑夜为你收集整理的Android使用Intent完成活动之间的通信的全部内容,希望文章能够帮你解决Android使用Intent完成活动之间的通信所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复