Android 跳转传值的方法

一般有三种方法

1.startActivity

 ActivityA --> ActivityB

ActivityA中 

Intent intent = new Intent(ActivityA.this,ActivityB.class);

startActivity(intent);

ActivityB中

intent = getIntent();

intent 传递数据 

在A发送 intent.putExtra("key","value");

在B获取 String value = intent.getStringExtra("key");

在有需要传递对象的时候,使用序列化

// 通过Bundle  使用序列化   ParcelableData是实现了序列化接口的实体类

Bundle bundle = new Bundle();    
bundle.putString("MyString", "test bundle");    
bundle.putParcelable("MyData", new ParcelableData());    
intent.putExtras(bundle);    

startActivity(intent); 


接收数据

Bundle bundle = getIntent().getExtras();    
ParcelableData parcelableData = bundle.getParcelable("MyData");    
String testBundleString = bundle.getString("MyString");    
Log.v("string=", testBundleString);    
Log.v("name=", parcelableData.getName());    

Log.v("age=", ""+parcelableData.getAge()); 


2.startActivityForResult

在A 使用这个跳转

Intent intent = new Intent(MainActivity.this,TwoActivity.class);
intent.putExtra("key", "value");
// 第二个参数是请求码,只要是一个唯一值

startActivityForResult(intent, 123); //有可以携带Bundle

再用onActivityResult接收

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
        switch (requestCode) {
            case 123:
                if (resultCode == RESULT_OK) {
                    //接收对象
                    //Bundle bundle = data.getExtras();
                    //AddressBean addressBean = (AddressBean) bundle.getSerializable(Constant.ADDRESSBEAN);
                    String returnedData = intent.getStringExtra("key1");
                }
                break;
            default:
        }
    }


在B 中

 //传递对象
                //Intent intent = new Intent();
                //Bundle bundle = new Bundle();
                //bundle.putSerializable(Constant.ADDRESSBEAN, addressArray.get(position));
                //intent.putExtras(bundle);
                //setResult(RESULT_OK, intent);
                //finish();

                Intent intent = new Intent();
                intent.putExtra("key1","value two activity");
                // 专门用于向上一个活动返回数据。第一个参数用于向上一个活动返回结果码,一般只使用RESULT_OK或RESULT_CANCELED这两个值
                setResult(RESULT_OK, intent);

                finish();

3.在 ActivityB中定义一个方法,表明需要的参数

public static void actionStart(Context context, String data1, String data2){
        Intent intent = new Intent(context,ActivityB.class);
        intent.putExtra("param1","data1");
        intent.putExtra("param2","data2");
        context.startActivity(intent);

    }

在ActivityA中调用

ActivityB.actionStart(ActivityA.this,"data1","data2");


你可能感兴趣的:(Android 跳转传值的方法)