四大组件_Activity_4.界面之间传递对象

界面之间除了可以通过putExtra(0方法来传递基本数据类型,还可以传递对象。

  • 首先我们需要创建一个User类,当要在不同界面之间传递该类的对象时,该类就要序列化,即实现parcelable接口,具体怎么实现请移步
    Android中Parcelable接口用法
  • 接下来我们来写一个实例,看看如何传递对象
  • activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"

    tools:context=".MainActivity">
    <Button
        android:onClick="transObj"//设置监听
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="传送对象"/>

</LinearLayout>
  • activity_second.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".SecondActivity">
    <TextView
        android:id="@+id/user_text"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="展示接收过来的对象数据"/>
</LinearLayout>
  • User类
package com.example.firstactivity;

import android.os.Parcel;
import android.os.Parcelable;

class User implements Parcelable {//实现parcelable接口
    private String name;
    private String tell;
    private int age;

    public User() {
    }

    public User(String name, String tell, int age) {
        this.name = name;
        this.tell = tell;
        this.age = age;
    }

    protected User(Parcel in) {
        name = in.readString();
        tell = in.readString();
        age = in.readInt();
    }

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

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getTell() {
        return tell;
    }

    public void setTell(String tell) {
        this.tell = tell;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

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

    @Override
    public void writeToParcel(Parcel parcel, int i) {
        parcel.writeString(name);
        parcel.writeString(tell);
        parcel.writeInt(age);
    }
}

  • MainActivity
package com.example.firstactivity;

import androidx.appcompat.app.AppCompatActivity;

import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    private EditText mAccount;
    private EditText mPassword;
    private Button mLogin;
    private String TAG = "MainActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void transObj(View view) {//实现监听方法  注意声明为public
        User user = new User();//创建对象
        user.setName("青山夫人");//设置内容
        user.setAge(22);
        user.setTell("150296065554");
        Intent intent = new Intent(MainActivity.this,SecondActivity.class);//活动跳转
        intent.putExtra("userKey",user);//传送数据
        startActivity(intent);
    }
}
  • SecondActivity
package com.example.firstactivity;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.widget.EditText;
import android.widget.TextView;

public class SecondActivity extends AppCompatActivity {

    String TAG = "SecondActivity";
    private TextView mObjET;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        initView();
    }

    private void initView() {
        mObjET = findViewById(R.id.user_text);
        Intent intent = getIntent();
        User user = intent.getParcelableExtra("userKey");//接收数据对象
        if (user != null) {//数据判空
            mObjET.setText("姓名:"+ user.getName()+"\n年龄:"+user.getAge()+"\n联系方式:"+user.getTell());//展示到界面上
        }else {
            mObjET.setText("空的数据");
        }

    }
}

以上就实现了界面之间对象的传递。大致步骤为:需要传递的类对象本类要实现parcelable接口,在当前界面传送数据,在跳转界面接收数据。

  • 如有谬误 烦请更正 感激不尽
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值