Android --- 界面之间传递对象

 

目录

一.User.java对象页面

 二. 原码

1. User.java

2. SkipActivity.java

3.activity_skip.xml

4.Data.java

5.activity_data.xml


一.User.java对象页面

  1. 写入类成员变量,并获得getter()和setter()方法。
    private int id;
    private String intro;
  2. 让此类实现Parcelable接口,并重写其方法。其中,此处只需改动writeToParcel(Parcel dest, int flags)方法。
    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeInt(id);              //将要传递的变量“写入”;
        dest.writeString(intro);
    }
  3. SkipActivity.java跳转页面
    parcelable.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            User user=new User();
            user.setId(172402);
            user.setIntro("天生丽质难自弃");
            Intent intent = new Intent(SkipActivity.this,Data.class);
            intent.putExtra("UserKey",user);
            startActivity(intent);
        }
    });
  4. Data.java跳转后获得对象的页面
    Intent userData =getIntent();         //勿写成new Intent();
    User UserKey = userData.getParcelableExtra("UserKey");
    String intro = UserKey.getIntro();
    int id = UserKey.getId();

 二. 原码

1. User.java

package com.example.classtask.skip;

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

public class User implements Parcelable {
       private int id;
       private String intro;

    protected User(Parcel in) {
        id = in.readInt();
        intro = in.readString();
    }

    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 User() {

    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getIntro() {
        return intro;
    }

    public void setIntro(String intro) {
        this.intro = intro;
    }

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

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeInt(id);
        dest.writeString(intro);
    }
}

2. SkipActivity.java

public class SkipActivity extends AppCompatActivity {

    private Button parcelable;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_skip);
        //初始化控件
        InitView();
        //控件操作
        parcelable();
    }
private void parcelable() {
        parcelable.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                User user=new User();
                user.setId(172402);
                user.setIntro("天生丽质难自弃");
                Intent intent = new Intent(SkipActivity.this,Data.class);
                intent.putExtra("UserKey",user);
                startActivity(intent);
            }
        });
    }
private void InitView() {

        parcelable = findViewById(R.id.parcelable);
    }
}

3.activity_skip.xml

<Button
            android:id="@+id/parcelable"
            android:layout_width="@dimen/btn_width"
            android:layout_height="@dimen/btn_height"
            android:layout_marginLeft="10dp"
            android:background="@drawable/btn_backgrund"
            android:text="Parcelable"
            android:textAllCaps="false"
            android:textColor="@color/white"
            android:textSize="15dp" />

4.Data.java

package com.example.classtask.skip;

import androidx.appcompat.app.AppCompatActivity;

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

import com.example.classtask.R;

public class Data extends AppCompatActivity {
    private EditText user_id;
    private EditText user_intro;


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

    private void GetData() {
        Intent userData =getIntent();
        User UserKey = userData.getParcelableExtra("UserKey");
        String intro = UserKey.getIntro();
        int id = UserKey.getId();
        user_id.setText(id + "");
        user_intro.setText(intro);
        Log.d("", "\nid----" + id + "\nintro----" + intro + "\n");
    }

    private void InitView() {
        user_id = findViewById(R.id.user_id);
        user_intro = findViewById(R.id.user_intro);
    }
}

5.activity_data.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <LinearLayout
        android:id="@+id/user"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="30dp"
        android:orientation="vertical"
        android:paddingLeft="20dp">

        <TextView
            android:id="@+id/user_title"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="User"
            android:textAllCaps="false"
            android:textSize="30dp" />

        <EditText
            android:id="@+id/user_id"
            android:layout_width="300dp"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:hint="User_id"
            android:textSize="20dp" />

        <EditText
            android:id="@+id/user_intro"
            android:layout_width="300dp"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:hint="user_intro"
            android:textSize="20dp" />
    </LinearLayout>
</LinearLayout>

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Larry Chow

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值