MainActivity中传值操作 public class MainActivity extends AppCompatActivity {
/** * 当一个Activity创建时会调用该方法,通过我们可以在该方法中进行组件的初始化工作 * @param savedInstanceState */@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); System.out.println("MainActivity-onCreate");}/** * 在Activity可见,但还不能进行交互时会调用该方法 * 在onCreate之后调用 */@Overrideprotected void onStart() { super.onStart(); System.out.println("MainActivity-onStart");}/** * 当Activity可以交互时调用 * 在onStart之后调用,该方法被调用后就表示Activity进入了激活状态 * resumed状态 */@Overrideprotected void onResume() { super.onResume(); System.out.println("MainActivity-onResume");}/** * 一个从stoped状态的Activity重新被激活时调用 * 接着会调用onStart()方法 */@Overrideprotected void onRestart() { super.onRestart(); System.out.println("MainActivity-onRestart");}/** * 当前Activity被另一个Activity覆盖,失去焦点,但还可见,不能交互 * 那么此时当前Activity进入了paused状态(暂停状态) * 当此状态下Activity重新获取焦点时会再调用onResume()方法 */@Overrideprotected void onPause() { super.onPause(); System.out.println("MainActivity-onPause");}/** * 当前Activity被另一个Activity完全覆盖,不可见且不可交互 * 那么此时当前Activity进入了stoped状态(停止状态) * 此状态下的Activity被重新显示时,会调用OnRestart()方法 */@Overrideprotected void onStop() { super.onStop(); System.out.println("MainActivity-onStop");}/** * 当前Activity被销毁时调用,表示结束生命周期 */@Overrideprotected void onDestroy() { super.onDestroy(); System.out.println("MainActivity-onDestroy");}public void activityClick(View v){ //打开另一个Activity,一个Intent对象代表一个意图 Intent intent = new Intent(this,Main2Activity.class); //给Activity传值方式一:创建一个Bundle对象封装数据 Bundle data = new Bundle(); data.putInt("id",1); data.putString("name","宏才"); data.putFloat("age",20.5f); intent.putExtra("data",data); //给Activity传值方式二:使用Intent准备的Bundle对象复制代码
// intent.putExtra("id",1); // intent.putExtra("name","大雷"); // intent.putExtra("age",18.5f); startActivity(intent);//启动Activity }
/** * 方式三:传递对象数据 * @param view */public void sendObjectClick(View view){ Intent intent = new Intent(this,Main2Activity.class); User user = new User(); user.setId(1); user.setName("宏才"); user.setSex("男"); intent.putExtra("user",user);//user对象必须实现序列化接口 startActivity(intent);} /** * 方式四:使用parcelable传递对象 * @param view */public void parcelableClick(View view){ Dog dog = new Dog();dog.setName("tom");dog.setSex("公");dog.setAge(5);Intent intent = new Intent(this,Main2Activity.class);intent.putExtra("dog",dog);startActivity(intent);复制代码
} } Main2Activity 接收数据的对应操作 public class Main2Activity extends AppCompatActivity { private TextView textView2_data,textView2_user,textView2_parcelable_dog; /** * 当一个Activity创建时会调用该方法,通过我们可以在该方法中进行组件的初始化工作 * @param savedInstanceState */ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); System.out.println("Main2Activity-onCreate");
textView2_data = (TextView) findViewById(R.id.textView2_data); textView2_user = (TextView) findViewById(R.id.textView2_user); textView2_parcelable_dog = (TextView) findViewById(R.id.textView2_parcelable_dog); Intent intent = getIntent(); System.out.println("2-"+intent); //方式一取值复制代码
// Bundle data = intent.getBundleExtra("data"); // int id = data.getInt("id"); // String name = data.getString("name"); // float age = data.getFloat("age");
//方式二取值复制代码
// int id = intent.getIntExtra("id",0); // String name = intent.getStringExtra("name"); // float age = intent.getFloatExtra("age", 18f); // // textView2_data.setText("id="+id+",name="+name+",age="+age);
//方式三取值复制代码
// User user = (User) intent.getSerializableExtra("user"); // textView2_user.setText(user.toString());
//方式四取值 Dog dog = intent.getParcelableExtra("dog"); textView2_parcelable_dog.setText(dog.toString());}/** * 在Activity可见,但还不能进行交互时会调用该方法 * 在onCreate之后调用 */@Overrideprotected void onStart() { super.onStart(); System.out.println("Main2Activity-onStart");}/** * 当Activity可以交互时调用 * 在onStart之后调用,该方法被调用后就表示Activity进入了激活状态 * resumed状态 */@Overrideprotected void onResume() { super.onResume(); System.out.println("Main2Activity-onResume");}/** * 一个从stopped状态的Activity重新被激活时调用 * 接着会调用onStart()方法 */@Overrideprotected void onRestart() { super.onRestart(); System.out.println("Main2Activity-onRestart");}/** * 当前Activity被另一个Activity覆盖,失去焦点,但还可见,不能交互 * 那么此时当前Activity进入了paused状态(暂停状态) * 当此状态下Activity重新获取焦点时会再调用onResume()方法 */@Overrideprotected void onPause() { super.onPause(); System.out.println("Main2Activity-onPause");}/** * 当前Activity被另一个Activity完全覆盖,不可见且不可交互 * 那么此时当前Activity进入了stopped状态(停止状态) * 此状态下的Activity被重新显示时,会调用OnRestart()方法 */@Overrideprotected void onStop() { super.onStop(); System.out.println("Main2Activity-onStop");}/** * 当前Activity被销毁时调用,表示结束生命周期 */@Overrideprotected void onDestroy() { super.onDestroy(); System.out.println("Main2Activity-onDestroy");}public void openActivity(View v){ //打开另一个Activity,一个Intent对象代表一个意图 Intent intent = new Intent(this,MainActivity.class); startActivity(intent);//启动Activity}复制代码
} Parcelable传值时 对象的准备: public class Dog implements Parcelable{ private String name; private String sex; private int age;
//对象的创建器(我们目的是要从包裹里把数据取出来,并封装成对象(Dog))public static final Parcelable.CreatorCREATOR = new Parcelable.Creator (){ //从包裹里把数据取出来 @Override public Dog createFromParcel(Parcel source) { System.out.println("createFromParcel"); Dog dog = new Dog(); dog.setName(source.readString()); dog.setSex(source.readString()); dog.setAge(source.readInt()); return dog; } @Override public Dog[] newArray(int size) { return new Dog[size]; }};
/** * 内容的描述标记(通常使用默认实现) * @return */@Overridepublic int describeContents() { return 0;}/** * 打包,把数据写入包裹对象 * @param dest * @param flags */@Overridepublic void writeToParcel(Parcel dest, int flags) { dest.writeString(name); dest.writeString(sex); dest.writeInt(age);}复制代码
public String getName() { return name; } public void setName(String name) { = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Dog{" + "name='" + name + ''' + ", sex='" + sex + ''' + ", age=" + age + '}'; } }