手动添加activity的步骤及其启动、数据传递
一、对应的布局文件(XXX_layout.xml);
二、创建Activity的子类;
并在onCreate()方法中引用布局文件;
三、在androidManifest.xml中配置这个Activity;
四、启动Activity
4.1)、基于Intent的通信
intent对象是component用来与操作系统通信的一种媒介工具;
使用intent告知ActivityManager该启动哪一个activity;
4.1.1、显示调用例子(在QuizActivity上调用CheatActivity)
Intent intent=new Intent(QuizActivity.this,CheatActivity.class);
QuizActivity.this.startActivity(intent);
4.1.2、隐式调用Intent
一个应用的activity如需启动另一个应用的activity,可通过创建隐式intent来处理。
五、Activity之间的数据传递
5.1、使用Intent的extra
extra是一种key-value结构。在父Activity传数据给子Activity。
Intent intent=newIntent(QuizActivity.this,CheatActivity.class);
boolean question=QuizActivity.this.mQuestionBank[QuizActivity.this.mCurrentIndex].ismBoolQuestion();
intent.putExtra(CheatActivity.KEY_EXTRA_ANSWER,question);
//传个boolean值
【手动添加activity的步骤及其启动、数据传递】QuizActivity.this.startActivity(intent);
//没有返回结果
在子activity的onCreate()方法中接收父传入的数据:
this.mAnswerIsTrue=this.getIntent().getBooleanExtra(CheatActivity.KEY_EXTRA_ANSWER,false);
5.2、父从子Activity中获取返回数据
1、先在父Activity中以下面的方式调用子Activity。
QuizActivity.this.startActivityForResult(intent,0);
2?在子Activity中以下面的方式返回结果给父Activity:
Intent intent=new Intent();
intent.putExtra(CheatActivity.KEY_RETURN,b);
this.setResult(100,intent);
3?再在父Activity中重写下面的方法
@Override
protected void onActivityResult(int requestCode,int resultCode, Intent data) {
if(data!=null){
boolean b= data.getBooleanExtra(CheatActivity.KEY_RETURN,false);
Log.i("return value:",b+":resultCode="+resultCode+":requestCode="+requestCode);
}
}
推荐阅读
- 编写字典程序
- Unity和Android通信系列文章2——扩展UnityPlayerActivity
- 怎么将桌面上的CAD图纸添加到软件中进行BMP格式转换()
- 2147483647与int型
- 怎样把一个字典的数据添加到另一个字典中()
- 培养习惯的倦怠期可以添加变化~74
- 如何在Kubernetes|如何在Kubernetes 里添加自定义的 API 对象(一)
- Ubuntu|Ubuntu 下添加开机启动脚本
- Android|Android Room 的坑
- 【Flink】Flink手动触发savepoint失败问题