Android activity实现多个界面的相互跳转(主要利用Intent)

Posted 雨后观山色

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android activity实现多个界面的相互跳转(主要利用Intent)相关的知识,希望对你有一定的参考价值。

1.activity介绍

一个activity就把他理解成一个页面

activity永远是全屏的。

2.新建activity流程

如图所示在com.lucky.test06的目录下,右击new--->Activity--->Empty Activity,会出现如下,点击finish即可。

3.页面跳转(利用Intent实现,页面跳转传值)

Intent称为意图,是android各大组件连接的桥梁

案例:test06

<1>页面1

布局页面:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    android:orientation="vertical"
    tools:context=".MainActivity"
    android:gravity="center">


    <TextView
        android:id="@+id/tv_show1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView" />

    <!--android:layout_marginTop="20dp" 设置button组件顶部距离上一个组件的距离为20dp-->
    <Button
        android:id="@+id/bt_link1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:text="link1" />
</LinearLayout>

后台代码:

package com.lucky.test06;

import android.app.Activity;
import android.content.Intent;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    Button bt_link1;
    TextView tv_show1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        bt_link1=findViewById(R.id.bt_link1);  //在XML文件中寻找组件
        tv_show1=findViewById(R.id.tv_show1);

        bt_link1.setOnClickListener(new View.OnClickListener() {  //绑定按钮点击事件
            @Override
            public void onClick(View v) {
                Intent intent=new Intent(MainActivity.this,Main2Activity.class);//参数1为跳转页面,参数2为跳转目标页
                intent.putExtra("001","雨后观山色");  //参数1为传输数据的代号,参数2为数据内容
                startActivityForResult(intent,0x01);//参数1为intent,参数2为请求码

            }
        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {  // 接收另一个页面的返回的数据
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode==0x01&&resultCode==0x02){  //判断请求码和结果码是否正确
            int i=data.getIntExtra("002",0);
            tv_show1.setText(i+"");
        }
    }
}

<2>页面2

 页面布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    android:orientation="vertical"
    android:gravity="center"
    tools:context=".Main2Activity">

    <TextView
        android:id="@+id/tv_show2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView" />

    <!--android:layout_marginTop="20dp" 设置button组件顶部距离上一个组件的距离为20dp-->
    <Button
        android:id="@+id/bt_link2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:text="link2" />
</LinearLayout>

后台代码:

package com.lucky.test06;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class Main2Activity extends AppCompatActivity {
    TextView tv_show2;
    Button bt_link2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        tv_show2=findViewById(R.id.tv_show2);
        bt_link2=findViewById(R.id.bt_link2);
        final Intent intent=getIntent(); //接收所传送过来的数据
        String data=intent.getStringExtra("001");  //参数为页面1的字符的代号
        tv_show2.setText(data);
        bt_link2.setOnClickListener(new View.OnClickListener() {  //绑定按钮点击事件
            @Override
            public void onClick(View v) {
                intent.putExtra("002",666); //参数1为数据代号,参数2为数据内容
                setResult(0x02,intent);   //参数1为结果码
                finish();//退出Main2Activity页面
            }
        });
    }
}

效果图:

 

以上是关于Android activity实现多个界面的相互跳转(主要利用Intent)的主要内容,如果未能解决你的问题,请参考以下文章

Android 多个Activity(Fragment)之间共享一个ViewModel对象,并扩展作用域注解

Android Fragment实现button间的切换

Android:手把手教你 实现Activity 与 Fragment 相互通信(含Demo)

android 弹出多个Activity的问题

Android7.0多窗口实现原理

Android创建多个Activity类