初识安卓之activity入门
从主界面跳转到另一个界面并在两者之间互相传递数据
public class ActivityTestActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
//点击主视图上一个按钮,执行open方法,转到另一个视图,期间需要使用intent,有两种跳转形式
public void open(View view){
Intent intent=new Intent();
//跳转形式一:显示意图打开:指明要打开哪个Activity,三中打开的方式如下:
//1.按类字节码打开
intent.setClass(this, anotherActivity.class);
/*//2.按类的完整类名打开(带包名的完整类名)
intent.setClassName(this, "com.itheima.anotherActivity");
//3.按照工程的唯一标示,打开其他工程总的某个Activity
intent.setClassName("工程的唯一标示","com.itheima.anotherActivity");*/
startActivity(intent);
}
//跳转形式二:
public void anotherOpen(View view){
//隐式意图打开:不知道要打开哪个Activity
Intent intent=new Intent();
//隐式意图拨打电话
//隐式意图的行为:(可以在清单文件中设置)
intent.setAction(Intent.ACTION_CALL);
//隐式意图的数据,完成行为必须的数据
intent.setData(Uri.parse("tel:15923486666"));
//intent.setAction("com.itheima.action.ANOTHER_ACTIVITY");
startActivity(intent);
}
//跳转到另个一界面的同时,带过去一些数据,intent本身可存放数据
public void send(View view){
Intent intent=new Intent(this, anotherActivity.class);
Person p1=new Person("lsk","25");
Person p2=new Person("shz","23");
//List<Person> list=new ArrayList<Person>(); 集合本身没有实现序列化,所以无法传递
intent.putExtra("p1",p1);
intent.putExtra("p2",p2);
startActivity(intent);
}
//如果是以 startActivityForResult(intent, 100);的方式跳转,则表明本次跳转是需要下一个界面返回数据回来的,返回的数据在主界面里用 onActivityResult方法获取, public void result(View view) { Intent intent = new Intent(this, OtherActivity.class); intent.putExtra("name", "张三"); intent.putExtra("age", 18); //200是请求码
startActivityForResult(intent, 200); // 启动一个Activity, 等待返回结果 } // 当前Activity启动的新Activity关闭时, 就会自动执行这个方法,即有当初的请求码,也有回来的响应吗 protected void onActivityResult(int requestCode, int resultCode, Intent data) { TextView mainTV = (TextView) findViewById(R.id.mainTV); mainTV.setText(data.getStringExtra("name") + ": " + data.getIntExtra("age", -1)); }
另一个界面上接受数据,同时回送一些数据
public class anotherActivity extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.other);
//对象在意图间的传递是通过把类文件序列化到磁盘,以文件的形式在多个activity间传递的
Intent intent=getIntent();
//接受上一个界面带过来的数据
Person p1=(Person) intent.getSerializableExtra("p1");
Person p2=(Person) intent.getSerializableExtra("p2");
TextView textTV=(TextView) findViewById(R.id.textTV);
textTV.setText(p1.toString()+p2.toString());
//回送给上一个页面一些数据
Intent data=new Intent();
data.putExtra("name", "王五");
data.putExtra("age", "21");
100响应码
setResult(100, data);
}
public void close(View view){
finish();
}
}