首页 > 其他分享 >47. Intent

47. Intent

时间:2022-09-20 08:11:42浏览次数:41  
标签:dingjiaxiong 47 Intent import intent android public

47. Intent

47.1 Intent基本类型

新建工程

在这里插入图片描述

更改下名字

在这里插入图片描述

new Activity2

在这里插入图片描述

Activity1布局

新建一个跳转按钮

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.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"
    tools:context=".simple01.MainActivity1">

    <Button
        android:id="@+id/button"
        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:onClick="startAction"
        />
</androidx.constraintlayout.widget.ConstraintLayout>

package com.dingjiaxiong.myintent.simple01;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;

import com.dingjiaxiong.myintent.R;

public class MainActivity1 extends AppCompatActivity {

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

    public void startAction(View view) {
        Intent intent = new Intent(this,MainActivity2.class);

        intent.putExtra("name","dingjiaxiong");
        intent.putExtra("sex","M");

        startActivity(intent);
    }
}

 


2

package com.dingjiaxiong.myintent.simple01;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.widget.Toast;

import com.dingjiaxiong.myintent.R;

public class MainActivity2 extends AppCompatActivity {

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

        //接收
        Intent intent = getIntent();
        String name = intent.getStringExtra("name");
        char sex = intent.getCharExtra("sex",'A');

        Toast.makeText(this,"name:" + name + "sex:" + sex,Toast.LENGTH_SHORT).show();

    }
}

运行

在这里插入图片描述

47.2 Intent传递Bundle
1

package com.dingjiaxiong.myintent.simple01;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import com.dingjiaxiong.myintent.R;

public class MainActivity1 extends AppCompatActivity {

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

    }

    public void startAction(View view) {
        Intent intent = new Intent(this,MainActivity2.class);

        //封装Bundle对象
        Bundle bundle = new Bundle();
        bundle.putString("name","dingjiaxiong");
        bundle.putChar("sex",'M');

        //通过intent
        intent.putExtras(bundle);

        startActivity(intent);
    }
}

 


2

package com.dingjiaxiong.myintent.simple01;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.widget.Toast;

import com.dingjiaxiong.myintent.R;

public class MainActivity2 extends AppCompatActivity {

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

        //接收,拆Bundle
        Intent intent = getIntent();

        String name = intent.getStringExtra("name");
        char sex = intent.getCharExtra("sex",'A');

        Toast.makeText(this,"name:" + name + "sex:" + sex,Toast.LENGTH_SHORT).show();

    }
}

运行

在这里插入图片描述

就只是封装一下,嗯。

47.3 传递Serializable接口
创建一个Student类

package com.dingjiaxiong.myintent.simple01;

import java.io.Serializable;

//必须实现这个接口,才能传递
public class Student implements Serializable {
    
    public int id;
    
    public String name;
    
    public int age;
    
}


1

package com.dingjiaxiong.myintent.simple01;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import com.dingjiaxiong.myintent.R;

public class MainActivity1 extends AppCompatActivity {

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

    }

    public void startAction(View view) {
        Intent intent = new Intent(this,MainActivity2.class);

        Student student = new Student();
        student.id = 9;
        student.name = "dingjiaxiong";
        student.age = 22;

        intent.putExtra("Student",student);

        startActivity(intent);
    }
}

 


2

package com.dingjiaxiong.myintent.simple01;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.widget.Toast;

import com.dingjiaxiong.myintent.R;

import java.io.Serializable;

public class MainActivity2 extends AppCompatActivity {

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

        //接收对象
        Intent intent = getIntent();

        Student student = (Student) intent.getSerializableExtra("Student");


        Toast.makeText(this,"student.id:" + student.id + "student.name:" + student.name,Toast.LENGTH_SHORT).show();

    }
}

运行

在这里插入图片描述

47.4 传递Parcelable接口
Student.java

package com.dingjiaxiong.myintent.simple01;

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

import java.io.Serializable;

//成为Parcelable子类
public class Student implements Parcelable {

    public Student(){}

    public String name;
    public int age;

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

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

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

 


1

package com.dingjiaxiong.myintent.simple01;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import com.dingjiaxiong.myintent.R;

public class MainActivity1 extends AppCompatActivity {

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

    }

    public void startAction(View view) {
        Intent intent = new Intent(this,MainActivity2.class);

        //传递Parceable对象

        Student student = new Student();
        student.name = "dingjiaxiong";
        student.age = 22;

        intent.putExtra("student",student);

        startActivity(intent);
    }
}

 


2

package com.dingjiaxiong.myintent.simple01;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.widget.Toast;

import com.dingjiaxiong.myintent.R;

import java.io.Serializable;

public class MainActivity2 extends AppCompatActivity {

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

        //接收对象
        Intent intent = getIntent();

        Student student = intent.getParcelableExtra("student");


        Toast.makeText(this,"student.age:" + student.age + "student.name:" + student.name,Toast.LENGTH_SHORT).show();

    }
}

运行

在这里插入图片描述

最好是使用Parcelable。因为其兼容安卓虚拟机,比Ser性能高很多。

 

标签:dingjiaxiong,47,Intent,import,intent,android,public
From: https://www.cnblogs.com/55zjc/p/16709773.html

相关文章

  • leetcode1047-删除字符串中的所有相邻重复项
    1047.删除字符串中的所有相邻重复项 方法一:stack 这种做法是纯纯的小丑做法,因为string类型本身就可以实现栈。这样的做法结束之后还要出栈倒序放到字符串里,时间开销......
  • ARC147F Again ABC String 解题记录
    题意:给定整数\(X,Y,Z\),称一个字符串\(S\)合法,当且仅当:\(|S|=n\)仅由字符\(\texttt{A,B,C}\)构成。对每个\(i\)满足:记\(A_i,B_i,C_i\)表示\(S\)前\(i\)......
  • AtCoder Regular Contest 147
    ProblemA题目大意:由N个正整数组成的序列,我们可以从中取出任意长短序列进行如下操作:序列中(最大值maxn%最小值minn=A),如果A为0则删除maxn,否则用A替换,询问要使得整个序......
  • 47 | JAVA_数据库JDBC查询
    JDBC查询导入依赖因为我们选择了MySQL5.x作为数据库,所以我们首先得找一个MySQL的JDBC驱动。所谓JDBC驱动,其实就是一个第三方jar包,我们直接添加一个Maven依赖就可以了:<d......
  • ARC147题解(A~E)
    \(A\)\(Problem\)给定长度为\(n\)的序列\(A\),要求重复执行以下操作,直到\(A\)中的元素个数为\(1\):选出下标\(i\),使得\(A_i\)是\(A\)中剩余的数中最大的;选出......
  • 47. SQL--克隆表(复制表)
    1.前言在某些情况下,您可能需要一个表的完整、精确副本,也即克隆表(复制表)。我们首先想到的是使用createtable命令创建一张新表,然后使用select命令从旧表中选取所有数......
  • Atcoder Regular Contest 147
     AtcoderRegularContest147这是本蒟蒻第3次打的\(ARC\),赛时的时候\(B\)题调代码调崩了,\(wa\)了15发。所以来简略的写一下题解A:题目链接题目大意:略题目分析......
  • Flask 学习-47.Flask-RESTX 自定义响应内容marshal_with
    前言Flask-RESTX提供了一种简单的方法来控制您在响应中实际呈现的数据或期望作为输入有效负载的数据。使用该fields模块,您可以在资源中使用所需的任何对象(ORM模型/自定......
  • Flask 学习-47.Flask-RESTX 设置 Swagger 文档
    前言SwaggerAPI文档是自动生成的,可从您的API的根URL获取。@api.doc()您可以使用装饰器配置文档。SwaggerUI文档默认flask-restx提供SwaggerUI文档,从API的......
  • Navicat连接Oracle时报错 “ORA-28547:连接服务器失败,可能是oracle net 管理错误“ 或
    Navicat连接Oracle时报错“ORA-28547:连接服务器失败,可能是oraclenet管理错误“ 或者“ORA-03135:ConnectionLostContact”使用Navicat连接oracle数据库时报ORA-2......