Activity 是Android中重要的组件,每个Activity对应一个界面,如何生成新的Activity,如何在不同Activity传递数值呢。
一、
生成新的Activity,当然要使用Intent了,这里有两种方式。(注意:所有的Activity都要在AndroidMainfest.xml 中声明)
1.使用显示的方式调用Intent
我们在一个button事件中生成新的activity
btn.setOnClickListener(new OnClickListener(){ @Override
public void onClick(View arg0) {
// TODO Auto-generated method stub Intent i = new Intent(MainActivity.this,SecondActivity.class);
startActivity(i,88);
}
});
2.使用隐式的形式
通过声明action 来调用响应的Activity
新的Activity需要在AndroidMainfest.xml 中 声明成这个样子:
<activity android:name =".ThirdActivity">
<intent-filter>
<action android:name="www.example.com.myAction"/>
<category android:name="android.intent.category.DEFAULT"></category>
</intent-filter>
</activity>
调用代码:
Intent intent = new Intent();
intent.setAction("www.example.com.myAction");
startActivity(intent);
其中的 <category> 标签必须要有的,添加一个 默认的。
二 、 数值的传递
如果把calling Activity 称为 父 Activity的话,新生成的称为child Activity
1.父向子传递数据,直接使用Intent的相关函数:
intent.putExtra();
在 Child Activity 中获取值:
Intent intentGet = getIntent();
intentGet.getStringExtra();
.....等等函数获取相关类型的值。
2.child Activity 向 父 Acitvity 中回传值
需要使用两个系统函数来完成:
生成child Activity 时使用:startActivityForResult()函数
Intent i = new Intent(MainActivity.this,SecondActivity.class); startActivityForResult(i,88);
在父Activity中重新回调函数:public void onActivityResult(int requestCode,int resultCode,Intent data)
当 child activity 调用finish() 函数结束生命后,返回父Activity自动调用onActivityResult()函数,
其中child activity 向回传的数据 通过 setResult() 函数设置。所有需要在finish()函数调用前,调用setResult() 完成回传值的设置。