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");


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章