3.安卓基础之Activity间的数据传递

mac2022-06-30  108

零、前言

打开FromActivity,通过按钮以返回结果方式打开ToActivity,同时在intent中加入数据, 在ToActivity的onCreate方法中使用数据填充到TextView上。 按返回按钮,将ToActivity数据传递给FromActivity,在onActivityResult方法中验证返回结果并将数据填充到TextView上。

一、Java类

FromActivity.java
public class FromActivity extends AppCompatActivity { private static final int DATA_CODE = 0x0001; @BindView(R.id.btn_for_result) Button mBtnForResult; @BindView(R.id.tv_result) TextView mTvResult; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.ac_from); ButterKnife.bind(this); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode) { case DATA_CODE: if (resultCode == RESULT_OK) { String dataFormTarget = data.getStringExtra("data"); Bundle personData = data.getBundleExtra("To"); Person person = (Person) personData.get("person"); mTvResult.setText("dataFormTarget:" + dataFormTarget + "\nperson:" + person.toString()); } break; } } @OnClick({R.id.btn_for_result}) public void onViewClicked(View view) { Intent intent = new Intent(this, ToActivity.class); Bundle bundle = new Bundle(); bundle.putSerializable("person", new Person("form", 23)); intent.putExtra("from", bundle); startActivityForResult(intent, DATA_CODE); } }
ToActivity.java
public class ToActivity extends AppCompatActivity { @BindView(R.id.btn_send) Button mBtnSend; @BindView(R.id.tv_to) TextView mTvTo; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.ac_target); ButterKnife.bind(this); Intent intent = getIntent(); Bundle extra = intent.getBundleExtra("from"); Person from = (Person) extra.get("person"); mTvTo.setText(from.toString()); } @OnClick(R.id.btn_send) public void onViewClicked() { backWithData(); finish(); } private void backWithData() { Person jt = new Person("捷特", 24); Intent intent = new Intent(); intent.putExtra("data", "我是ToActivity的数据"); Bundle bundle = new Bundle(); bundle.putSerializable("person", jt); intent.putExtra("To", bundle); setResult(RESULT_OK, intent); } /** * 重写返回键 */ @Override public void onBackPressed() { backWithData(); super.onBackPressed(); } }


附录

Person.java
public class Person implements Serializable { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; } }
ac_from.xml
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:id="@+id/btn_for_result" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="112dp" android:layout_marginTop="32dp" android:text="StartTargetForResult" android:textAllCaps="false" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"/> <TextView android:id="@+id/tv_result" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="点击按钮 获取返回结果" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"/> </android.support.constraint.ConstraintLayout>
ac_to.xml
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:id="@+id/btn_send" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="30dp" android:layout_marginStart="30dp" android:layout_marginTop="24dp" android:text="返回给上一个Activity结果" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"/> <TextView android:id="@+id/tv_to" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="结果" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"/> </android.support.constraint.ConstraintLayout>

后记、

1.声明:

1.本文由张风捷特烈原创,转载请注明 2.欢迎广大编程爱好者共同交流 3.个人能力有限,如有不正之处欢迎大家批评指证,必定虚心改正 4.看到这里,感谢你的喜欢与支持

2.连接传送门:

更多安卓技术欢迎访问:安卓技术栈我的github地址:欢迎star张风捷特烈个人网站:http://www.toly1994.com

3.联系我

QQ:1981462002 邮箱:1981462002@qq.com 微信:zdl1994328

转载于:https://www.cnblogs.com/toly-top/p/9781857.html

最新回复(0)