初识安卓之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();
     }
}
原文地址:https://www.cnblogs.com/94007boy/p/2791545.html