android-----实现不两个不同的activity的跳转和数据传递
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了android-----实现不两个不同的activity的跳转和数据传递,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5349字,纯文字阅读大概需要8分钟。
内容图文
![android-----实现不两个不同的activity的跳转和数据传递](/upload/InfoBanner/zyjiaocheng/1204/1f3ffa7b416344d4a0af8f688be19259.jpg)
最近学习了android的界面的跳转,一个是activity和fragment之间的跳转(之前的博客说过),一个是不同activity之间的跳转。
activity直接的跳转很简单,只需要用Intent即可,而且传递数据很简便,如果只是传递简单数据,即可直接使用,如果传递复杂的数据,比如一个类,就得需要把类定义为
。
个人觉得android跳转页面要比JAVA的简单的很多!!。看例子。
下图是从一个Activity跳转到另一个activity,并将数据传递过去。
实体类:(因为我们要传递一个实体类,所有要用到Parcelable)
Android中的Activity传递数据时,为了方便往往将很多数据封装成对象,然后将整个对象传递过去。传对象的时候有两种情况,一种是实现Parcelable接口,一种是实现Serializable接口。
先将Grade implements
Parcelable,然后点击Grade,会出现一个红色的小灯泡,点击即可,生成的函数不需要动,位置也不要动,否则会保出错。
package com.example.testparcelable; import android.os.Parcel; import android.os.Parcelable; public class Student implements Parcelable{ private String name; privateint age; private Grade grade; public Student(String name, int age, Grade grade) { this.name = name; this.age = age; this.grade = grade; } protected Student(Parcel in) { name = in.readString(); age = in.readInt(); grade = in.readParcelable(Grade.class.getClassLoader()); } @Override publicvoid writeToParcel(Parcel dest, int flags) { dest.writeString(name); dest.writeInt(age); dest.writeParcelable(grade, flags); } @Override publicint describeContents() { return 0; } publicstaticfinal Creator<Student> CREATOR = new Creator<Student>() { @Override public Student createFromParcel(Parcel in) { returnnew Student(in); } @Override public Student[] newArray(int size) { returnnew Student[size]; } }; public String getName() { return name; } publicvoid setName(String name) { this.name = name; } publicint getAge() { return age; } publicvoid setAge(int age) { this.age = age; } public Grade getGrade() { return grade; } publicvoid setGrade(Grade grade) { this.grade = grade; } } class Grade implements Parcelable { privateint math; privateint chinese; privateint English; public Grade(int math, int chinese, int english) { this.math = math; this.chinese = chinese; English = english; } protected Grade(Parcel in) { math = in.readInt(); chinese = in.readInt(); English = in.readInt(); } @Override publicvoid writeToParcel(Parcel dest, int flags) { dest.writeInt(math); dest.writeInt(chinese); dest.writeInt(English); } @Override publicint describeContents() { return 0; } publicstaticfinal Creator<Grade> CREATOR = new Creator<Grade>() { @Override public Grade createFromParcel(Parcel in) { returnnew Grade(in); } @Override public Grade[] newArray(int size) { returnnew Grade[size]; } }; publicint getMath() { return math; } publicvoid setMath(int math) { this.math = math; } publicint getChinese() { return chinese; } publicvoid setChinese(int chinese) { this.chinese = chinese; } publicint getEnglish() { return English; } publicvoid setEnglish(int english) { English = english; } }
MainActivity:为了操作方便我们使用dataBinding,在里android{
defaultConfig{}
}里设置
,然后在activity_main.xml点击text,将鼠标移到该位置,点击小灯泡,如图
。转换为data binding layout。这样我们就不用通过获取ID来对控件进行操作。
package com.example.testparcelable; import androidx.appcompat.app.AppCompatActivity; import androidx.databinding.DataBindingUtil; import android.content.Intent; import android.os.Bundle; import android.view.View; import com.example.testparcelable.databinding.ActivityMainBinding; public class MainActivity extends AppCompatActivity { @Override protectedvoid onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); final ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main); binding.button.setOnClickListener(new View.OnClickListener() { @Override publicvoid onClick(View v) { String name = binding.editTextName.getText().toString(); int age = Integer.valueOf(binding.editTextAge.getText().toString()); int chinese = Integer.valueOf(binding.editTextChinese.getText().toString()); int english = Integer.valueOf(binding.editTextEnglish.getText().toString()); int math = Integer.valueOf(binding.editTextMath.getText().toString()); Student student = new Student(name,age,new Grade(math,chinese,english) ); Intent intent = new Intent(MainActivity.this,Main2Activity.class); Bundle bundle = new Bundle(); bundle.putParcelable("student",student); intent.putExtra("bundle", bundle); startActivity(intent); } }); } }
main2Activity:对一做同样的操作。
package com.example.testparcelable; import androidx.appcompat.app.AppCompatActivity; import androidx.databinding.DataBindingUtil; import android.content.Intent; import android.os.Bundle; import android.widget.TextView; import com.example.testparcelable.databinding.ActivityMain2Binding; import com.example.testparcelable.databinding.ActivityMainBinding; import org.w3c.dom.Text; public class Main2Activity extends AppCompatActivity { @Override protectedvoid onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ActivityMain2Binding binding = DataBindingUtil.setContentView(this, R.layout.activity_main2); Intent intent = getIntent(); Bundle bundle = intent.getBundleExtra("bundle"); Student student = bundle.getParcelable("student"); binding.textViewName.setText(student.getName()); binding.textViewAge.setText(String.valueOf(student.getAge())); binding.textViewChinese.setText(String.valueOf(student.getGrade().getChinese())); binding.textViewEnglish.setText(String.valueOf(student.getGrade().getEnglish())); binding.textViewMath.setText(String.valueOf(student.getGrade().getMath())); } }
Layout样式:我只截图了,不发代码。截图很清晰可见,容易上手。(名字就是对应的id)
main_activity.xml:
main_activity2.xml:
原文:https://www.cnblogs.com/yangxiao-/p/12306988.html
内容总结
以上是互联网集市为您收集整理的android-----实现不两个不同的activity的跳转和数据传递全部内容,希望文章能够帮你解决android-----实现不两个不同的activity的跳转和数据传递所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。