Android Intent多种传值方式
16lz
2021-01-23
源码下载:
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 下载
更多相关文章
- Android 创建与解析XML(三)—— Sax方式(源码)
- android webview 添加内置对象
- Android BroadcastReceiver两种注册方式区别
- Android Post方法请求URL 迭代器
- 设置android全屏的两种方式
- android 创建快捷方式 删除快捷方式 不重复判断快捷方式
- android LayoutInflater三种获取方式
- Android DEX方法超过64K和gradle编译OOM解决方案
- android使用两种方式注册receiver