源码下载:
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
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
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 下载