Android Intent多种传值方式

源码下载:

https://download.csdn.net/download/qq_31939617/10487527 下载

Android Intent多种传值方式

MainActivity.class

package com.example.sz.intentdemo;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.KeyEvent;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private Button btn1, btn2, btn3, btn4, btn5, btn6, btn7;
    private TextView tv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        tv = findViewById(R.id.tv_result);

        btn1 = findViewById(R.id.btn_1);
        btn2 = findViewById(R.id.btn_2);
        btn3 = findViewById(R.id.btn_3);
        btn4 = findViewById(R.id.btn_4);
        btn5 = findViewById(R.id.btn_5);
        btn6 = findViewById(R.id.btn_6);
        btn7 = findViewById(R.id.btn_7);

        btn1.setOnClickListener(this);
        btn2.setOnClickListener(this);
        btn3.setOnClickListener(this);
        btn4.setOnClickListener(this);
        btn5.setOnClickListener(this);
        btn6.setOnClickListener(this);
        btn7.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.btn_1://intent传值
                Intent intent1 = new Intent(this, OneActivity.class);
                intent1.setAction("one");
                intent1.putExtra("key1", "123");
                startActivity(intent1);

                break;
            case R.id.btn_2://bundle传值
                Intent intent2 = new Intent(this, TwoActivity.class);
                intent2.setAction("two");
                Bundle bundle1 = new Bundle();
                bundle1.putString("key2", "456");
                intent2.putExtras(bundle1);     //将bundle传入intent中。
                startActivity(intent2);

                break;

            case R.id.btn_3://startForResult传值
                Intent intent3 = new Intent(this, ThreeActivity.class);
                int code = 3;
                startActivityForResult(intent3, code);
                break;
            case R.id.btn_4://相邻两个以上的activty之间的传值
                Intent intent = new Intent(this, FourActivity.class);
                Constant.result = "101";
                startActivity(intent);
                break;
            case R.id.btn_5:
                Intent intent5 = new Intent(this, FiveActivity.class);
                Bundle bundle = new Bundle();
                // Serializable传递对象
                MyData1 data1 = new MyData1();
                data1.setResult1("123456");

                bundle.putSerializable("ser_key", data1);
                intent5.putExtra("ser_type", "ser_type");
                intent5.putExtras(bundle);
                startActivity(intent5);
                break;

            case R.id.btn_6:
                Intent intent6 = new Intent(this, SixActivity.class);
                Bundle bundle6 = new Bundle();
                // Parcelable传递对象
                MyData2 data2 = new MyData2();
                data2.setResult2("7890");
                // Bundle有putParcelableArray和putParcelableArrayList方法,也就可以传递数组和列表
                bundle6.putParcelable("par_key", data2);
                intent6.putExtra("par_type", "par_type");
                // Intent也有putParcelableArrayListExtra方法,可以传递实现Parcelable接口的对象列表
                intent6.putExtras(bundle6);
                startActivity(intent6);
                break;
            case R.id.btn_7:
                List>list= new ArrayList<>();
                Mapmap = new HashMap<>();
                map.put("key7","1234567");

                list.add(map);

               // 传送方:
                Intent intent7 = new Intent(this, SevenActivity.class);
                Bundle bundle7 = new Bundle();
                bundle7.putSerializable("list", (Serializable) list);
                intent7.putExtras(bundle7);
                startActivity(intent7);


                break;
            default:
                break;
        }
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == 3 && resultCode == 33) {
            String result = data.getStringExtra("key3");
            tv.setText(result);
        }
    }

    @Override
    public boolean dispatchKeyShortcutEvent(KeyEvent event) {
        if (event.getKeyCode() == KeyEvent.KEYCODE_MENU) {
            return true;
        }
        return super.dispatchKeyShortcutEvent(event);
    }
}

OneActivity.class

package com.example.sz.intentdemo;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.TextView;

public class OneActivity extends AppCompatActivity {
    private static final String TAG = "OneActivity";
    private TextView tv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_one);
        tv = findViewById(R.id.tv_result);

        Intent intent = getIntent();
        String action = intent.getAction();
        if(action.equals("one")){
            String result = intent.getStringExtra("key1");
            Log.e(TAG, "onCreate: -----------OneActivity:"+result );
            tv.setText(result);
        }

    }
}

TwoActivity.class

package com.example.sz.intentdemo;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;

public class TwoActivity extends AppCompatActivity {
    private static final String TAG = "TwoActivity";
    private TextView tv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_two);
        tv = findViewById(R.id.tv_result);

        Intent intent = getIntent();
        String action = intent.getAction();
        if (action.equals("two")) {
            Bundle bundle = intent.getExtras();
            String result = bundle.getString("key2");
            tv.setText(result);
        }
    }

}

ThreeActivity.class

package com.example.sz.intentdemo;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;

public class ThreeActivity extends AppCompatActivity {
    private static final String TAG = "TwoActivity";
    private TextView tv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_two);
        tv = findViewById(R.id.tv_result);

        Intent intent = getIntent();
        intent.putExtra("key3","789");
        setResult(33,intent);
        finish();


    }

}

FourActivity.class

package com.example.sz.intentdemo;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;

public class FourActivity extends AppCompatActivity {
    private static final String TAG = "OneActivity";
    private static TextView tv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_four);
        tv = findViewById(R.id.tv_result);


        String result = Constant.result;
        tv.setText(result);

    }


}

FiveActivity.class

package com.example.sz.intentdemo;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.TextView;

public class FiveActivity extends AppCompatActivity {
    private static final String TAG = "FiveActivity";
    private TextView tv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_five);
        tv = findViewById(R.id.tv_result);

        StringBuffer sb = new StringBuffer();
        String type = getIntent().getStringExtra("ser_type");
        Log.e(TAG, "onCreate: -----------------"+type );

        // 根据type判断是哪种类型
        if (type.equals("ser_type")) {
            // 获取Serializable对象
            MyData1 data1 = (MyData1) getIntent().getSerializableExtra("ser_key");
           // sb.append("----From Serializable----").append("\n");
           // sb.append("result1:").append(data1.getResult1()).append("\n");
            sb.append(data1.getResult1()).append("\n");

            Log.e(TAG, "onCreate: -----------FiveActivity:" + sb.toString());
            tv.setText(sb.toString());

        }


    }
}

SixActivity.class

package com.example.sz.intentdemo;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.TextView;

public class SixActivity extends AppCompatActivity {
    private static final String TAG = "SixActivity";
    private TextView tv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_six);
        tv = findViewById(R.id.tv_result);

        // 获取Parcelable对象
        MyData2 data2 = (MyData2) getIntent().getParcelableExtra("par_key");
        StringBuffer sb = new StringBuffer();
        //sb.append("----From Parcelable----").append("\n");
        //sb.append("result:").append(data2.getResult2()).append("\n");
        sb.append(data2.getResult2()).append("\n");

        Log.e(TAG, "onCreate: -----------SixActivity:" + sb.toString());
        tv.setText(sb.toString());

    }


}

SevenActivity.class

package com.example.sz.intentdemo;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.TextView;

import java.util.List;
import java.util.Map;

public class SevenActivity extends AppCompatActivity {
    private static final String TAG = "SevenActivity";
    private TextView tv;
    private String result;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_seven);
        tv = findViewById(R.id.tv_result);

        //接收方:
        Bundle bundle = this.getIntent().getExtras();
        List> list = (List>) bundle
                .getSerializable("list");
        for(int i =0;i"key7");
        }

        Log.e(TAG, "onCreate: -----------SevenActivity:" + result.toString());
        tv.setText(result.toString());

    }


}

MyData1.class

package com.example.sz.intentdemo;

import java.io.Serializable;

/**
 * Created by ThinkPad_2 on 2018/6/10.
 * 

* 第一步:定义序列化实体类; *

* Serializable方式: * * * 1、File -> Settings... -> Editor -> Inspections -> Serialization issues[在java类目下] -> Serializable class without 'serialVersionUID'(选中) 2、进入实现了Serializable中的类,选中类名,Alt+Enter弹出提示,然后直接导入完成 */ public class MyData1 implements Serializable { private static final long serialVersionUID = -1234678274486715979L; public String getResult1() { return result1; } public void setResult1(String result1) { this.result1 = result1; } /** * serialVersionUID的作用是在修改实体类后,可以正常的序列化和反序列化,在此不多说,大家可以谷歌百度下。 */ private String result1; }

MyData2.class

package com.example.sz.intentdemo;

import android.os.Parcel;
import android.os.Parcelable;

/**
 * Created by ThinkPad_2 on 2018/6/10.
 * Parcelable方式:
 */

public class MyData2 implements Parcelable {
    private String result2;

    public String getResult2() {
        return result2;
    }

    public void setResult2(String result2) {
        this.result2 = result2;
    }


    /**
     * 序列化实体类
     */
    public static final Parcelable.Creator CREATOR = new Creator() {
        public MyData2 createFromParcel(Parcel source) {
            MyData2 data2 = new MyData2();
            data2.result2 = source.readString();
            return data2;
        }

        public MyData2[] newArray(int size) {
            return new MyData2[size];
        }
    };

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel parcel, int i) {
        parcel.writeString(result2);

    }
}

Constant.class

package com.example.sz.intentdemo;

public class Constant {
    public static String result;
}

源码下载:

https://download.csdn.net/download/qq_31939617/10487527 下载

你可能感兴趣的:(android)