ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

android-----实现不两个不同的activity的跳转和数据传递

2021-06-04 19:03:48  阅读:163  来源: 互联网

标签:chinese int 跳转 binding Grade ----- activity import public


 最近学习了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;
    private int 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
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(name);
        dest.writeInt(age);
        dest.writeParcelable(grade, flags);
    }

    @Override
    public int describeContents() {
        return 0;
    }

    public static final Creator<Student> CREATOR = new Creator<Student>() {
        @Override
        public Student createFromParcel(Parcel in) {
            return new Student(in);
        }

        @Override
        public Student[] newArray(int size) {
            return new Student[size];
        }
    };

    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;
    }

    public Grade getGrade() {
        return grade;
    }

    public void setGrade(Grade grade) {
        this.grade = grade;
    }
}
class Grade implements Parcelable {
    private int math;
    private int chinese;
    private int 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
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeInt(math);
        dest.writeInt(chinese);
        dest.writeInt(English);
    }

    @Override
    public int describeContents() {
        return 0;
    }

    public static final Creator<Grade> CREATOR = new Creator<Grade>() {
        @Override
        public Grade createFromParcel(Parcel in) {
            return new Grade(in);
        }

        @Override
        public Grade[] newArray(int size) {
            return new Grade[size];
        }
    };

    public int getMath() {
        return math;
    }

    public void setMath(int math) {
        this.math = math;
    }

    public int getChinese() {
        return chinese;
    }

    public void setChinese(int chinese) {
        this.chinese = chinese;
    }

    public int getEnglish() {
        return English;
    }

    public void 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
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        final ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
        binding.button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void 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
    protected void 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()));

    }
}
复制代码

 


 

标签:chinese,int,跳转,binding,Grade,-----,activity,import,public
来源: https://www.cnblogs.com/hrzgj/p/14850848.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有