锐客网

手动添加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);
}
}