Activity 和 Intent
一、Intent指向Activity
二、利用 Intent 向第二个 Activity 传数据
三、利用 Intent 接受第二个 Activity 的返回值
四、利用 Intent 调用 内置应用程序
一、Intent指向Activity
Button btnStartAty1=(Button) findViewById(R.id.btnStartAty1);
btnStartAty1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent i=new Intent(MainActivity.this,aty1.class);
startActivity(i);
}
});
btnStartAty1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent i=new Intent(MainActivity.this,aty1.class);
startActivity(i);
}
});
代码解释:
在按钮 btnStartAty1 的点击事件中,创建一个Intent对象(参数:MainActivity是当前Activity,aty1是Intent指向的Activity),
startActivity(i) 就是以Intent作为参数来启动Activity,这样,我们只要点击MainActivity中的btnStartAty1,
程序就会从MainActivity切换到Activity Aty1。
二、利用 Intent 向第二个 Activity 传数据
利用Intent传值,是在是在一中的基础上进行的,分为传递单个值和多个值,如下代码
Button btnCloseAty1=(Button) findViewById(R.id.btnCloseAty1);
btnCloseAty1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
Button btnSendToAty2=(Button) findViewById(R.id.btnSendToAty2);
btnSendToAty2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
////绑定数据——putExtra传值
//Intent i=new Intent(aty1.this,aty2.class);
//i.putExtra("Name", "aty2");
//startActivity(i);
//绑定成一捆数据——putExtras
Intent i=new Intent(aty1.this,aty2.class);
Bundle extras=new Bundle();
extras.putString("Name", "aty2");
extras.putString("Gender", "male");
i.putExtras(extras);
startActivity(i);
}
btnCloseAty1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
Button btnSendToAty2=(Button) findViewById(R.id.btnSendToAty2);
btnSendToAty2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
////绑定数据——putExtra传值
//Intent i=new Intent(aty1.this,aty2.class);
//i.putExtra("Name", "aty2");
//startActivity(i);
//绑定成一捆数据——putExtras
Intent i=new Intent(aty1.this,aty2.class);
Bundle extras=new Bundle();
extras.putString("Name", "aty2");
extras.putString("Gender", "male");
i.putExtras(extras);
startActivity(i);
}
在第二个 Activity 中取值的代码:
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.aty2);
////获取绑定的数据
//String defaultName=getIntent().getStringExtra("Name");
//获取一捆数据
Bundle extras=getIntent().getExtras();
String defaultName==extras.getString("Name");
String defaultGender=extras.getString("Gender");
}
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.aty2);
////获取绑定的数据
//String defaultName=getIntent().getStringExtra("Name");
//获取一捆数据
Bundle extras=getIntent().getExtras();
String defaultName==extras.getString("Name");
String defaultGender=extras.getString("Gender");
}
三、利用 Intent 接受第二个 Activity 的返回值
Button btnGetReturndata=(Button) findViewById(R.id.btnGetReturndata);
btnGetReturndata.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent i=new Intent(aty2.this,aty3.class);
startActivityForResult(i,0);
}
});
btnGetReturndata.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent i=new Intent(aty2.this,aty3.class);
startActivityForResult(i,0);
}
});
在第二个Activity中设置返回的值:
Intent i=new Intent();
i.putExtra("result", "this string is passed by aty3");
setResult(0,i);
finish();
i.putExtra("result", "this string is passed by aty3");
setResult(0,i);
finish();