• 【安卓开发】安卓页面跳转


    一、如何添加一个页面(activity)

    1. 右键 src 文件点击 New -> Other

    在这里插入图片描述

    2. 点击 Android Activity:

    在这里插入图片描述

    3. 点击 Blank Activity ,点击 Next:

    在这里插入图片描述

    4. 填写相关信息,点击 Finish ,完成创建:

    在这里插入图片描述




    可以看到,在 src 文件下和 res 的 layout 文件下,分别增加了一个 .java 文件和 .xml文件。

    在这里插入图片描述



    二、如何实现页面的跳转

    1. 在第一个页面的 activity_main.xml 文件中设置按钮和文本:

    <RelativeLayout 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"
        tools:context=".MainActivity" >
    
        

    2. 在第一个页面的 MainActivity.java 文件中利用 Intent 类实例化页面跳转对象,并用 startActivity() 方法实现页面跳转,将这一系列操作封装在 按键响应方法 goSecond() 中:

    package com.example.ycy;
    
    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    
    public class MainActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
                
        }
        
        public void goSecond(View v){
        	//Intent去设置要跳转的页面
            Intent intent = new Intent(this, SecondActivity.class);
            //跳转
            startActivity(intent);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    3. 在第二个界面的 activity_second.xml 和 SecondActivity.java 文件中进行同样的操作

    activity_second.xml

    <RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context=".SecondActivity" >
    
        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/textView1"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="48dp"
            android:onClick="goMain"
            android:text="跳转到第一个页面" />
    
        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="93dp"
            android:text="这是第二个页面" />
    
    RelativeLayout>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    SecondActivity.java

    package com.example.ycy;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.content.Intent;
    import android.view.Menu;
    import android.view.View;
    
    public class SecondActivity extends Activity {
    
    	@Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_second);
                
        }
        
        public void goMain(View v){
        	//Intent去设置要跳转的页面
            Intent intent = new Intent(this, MainActivity.class);
            //跳转
            startActivity(intent);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    效果显示:

    跳转前:

    在这里插入图片描述

    跳转后:

    在这里插入图片描述



    二、页面跳转传参

    1. 方式一

    采用 putExtra() 方法发送, getStringExtra() 方法接收

    		Intent intent = new Intent(this, SecondActivity.class);
            //给另一个页面传参
            intent.putExtra("MyData", "我是第二个页面传过来的数据");
            //跳转
            startActivity(intent);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    Intent i = this.getIntent();
            data = i.getStringExtra("MyData");
            
            System.out.println("收到数据:"+data);
            Toast.makeText(this, "第二个页面收到数据:"+data, 0).show();
    
    • 1
    • 2
    • 3
    • 4
    • 5

    页面1:

    package com.example.ycy;
    
    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Toast;
    
    public class MainActivity extends Activity {
    
    	private String data;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
                
            Intent i = this.getIntent();
            data = i.getStringExtra("MyData");
            
            System.out.println("收到数据:"+data);
            Toast.makeText(this, "第一个页面收到数据:"+data, 0).show();
        }
        
        public void goSecond(View v){
        	//Intent去设置要跳转的页面
            Intent intent = new Intent(this, SecondActivity.class);
            //给另一个页面传参
            intent.putExtra("MyData", "我是第二个页面传过来的数据");
            //跳转
            startActivity(intent);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    页面2:

    package com.example.ycy;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.content.Intent;
    import android.view.Menu;
    import android.view.View;
    import android.widget.Toast;
    
    public class SecondActivity extends Activity {
    	
    	private String data;
    	@Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_second);
                
            Intent i = this.getIntent();
            data = i.getStringExtra("MyData");
            
            System.out.println("收到数据:"+data);
            Toast.makeText(this, "第二个页面收到数据:"+data, 0).show();
        }
        
        public void goMain(View v){
        	//Intent去设置要跳转的页面
            Intent intent = new Intent(this, MainActivity.class);
          //给另一个页面传参
            intent.putExtra("MyData", "我是第一个页面传过来的数据");
            //跳转
            startActivity(intent);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    .java 代码如上, .xml 代码和跳转代码相同。

    效果显示:

    在这里插入图片描述

    在这里插入图片描述

    2. 方式二

    页面一实例化Bundle类,通过其对象调用 putString 等方法发送多组数据,用 putExtras 方法一并传递出去,接收方实例化Bundle类,调用 getExtras 方法承接,最后调用 getString 等方法将每组数据一一获取。

    //Intent去设置要跳转的页面
            Intent intent = new Intent(this, SecondActivity.class);
            //用Bundle类创建对象向其他页面发送多个数据
            Bundle bundle = new Bundle();
            bundle.putString("MyData", "这是第一个页面发送的数据");
            bundle.putInt("ID",100);
            //最后一并用putExtras发过去
            intent.putExtras(bundle);
            //跳转
            startActivity(intent);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    Intent i = this.getIntent();
            
            //创建Bundle类对象接收其他页面发送过来的数据
            Bundle b = i.getExtras();
            String data = b.getString("MyData");
            int data2 = b.getInt("ID");
            
            Toast.makeText(this, "第二个页面收到数据:"+data+data2, 0).show();
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    页面一:

    package com.example.ycy;
    
    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Toast;
    
    public class MainActivity extends Activity {
    
    	private String data;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
                
            Intent i = this.getIntent();
          //创建Bundle类对象接收其他页面发送过来的数据
            Bundle b = i.getExtras();
            String data = b.getString("MyData");
            int data2 = b.getInt("ID");
            
            Toast.makeText(this, "第二个页面收到数据:"+data+data2, 0).show();
        }
        
        public void goSecond(View v){
        	//Intent去设置要跳转的页面
            Intent intent = new Intent(this, SecondActivity.class);
            //用Bundle类创建对象向其他页面发送多个数据
            Bundle bundle = new Bundle();
            bundle.putString("MyData", "这是第一个页面发送的数据");
            bundle.putInt("ID",100);
            //最后一并用putExtras发过去
            intent.putExtras(bundle);
            //跳转
            startActivity(intent);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38

    页面二:

    package com.example.ycy;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.content.Intent;
    import android.view.Menu;
    import android.view.View;
    import android.widget.Toast;
    
    public class SecondActivity extends Activity {
    	
    	private String data;
    	@Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_second);
                
            Intent i = this.getIntent();
            
            //创建Bundle类对象接收其他页面发送过来的数据
            Bundle b = i.getExtras();
            String data = b.getString("MyData");
            int data2 = b.getInt("ID");
            
            Toast.makeText(this, "第二个页面收到数据:"+data+data2, 0).show();
        }
        
        public void goMain(View v){
        	//Intent去设置要跳转的页面
            Intent intent = new Intent(this, MainActivity.class);
            //用Bundle类创建对象向其他页面发送多个数据
            Bundle bundle = new Bundle();
            bundle.putString("MyData", "这是第二个页面发送的数据");
            bundle.putInt("ID",200);
            //最后一并用putExtras发过去
            intent.putExtras(bundle);
            //跳转
            startActivity(intent);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40

    .java 代码如上, .xml 代码和跳转代码相同。

    效果显示:

    在这里插入图片描述

    在这里插入图片描述

    安卓线程实现页面跳转

    安卓创建一个线程

    Thread t = new Thread(new Runnable() {	//实例化Thread类,实现 Runnable 接口并且写业务
    			
    			@Override
    			public void run() {
    				//线程中实现的业务	
    			}
    		}); 
            
            t.start();	//线程启动
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    页面一代码:

    package com.example.ycy;
    
    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    
    public class MainActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            
            Thread t = new Thread(new Runnable() {
    			
    			@Override
    			public void run() {
    				// TODO Auto-generated method stub
    				try {
    					Thread.sleep(3000);
    				} catch (InterruptedException e) {
    					// TODO Auto-generated catch block
    					e.printStackTrace();
    				}
    				
    				//Intent去设置要跳转的页面
    		        Intent intent = new Intent(MainActivity.this, SecondActivity.class);
    		        //跳转
    		        startActivity(intent);
    				
    			}
    		}); 
            
            t.start();
        } 
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38

    页面二代码:

    package com.example.ycy;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.content.Intent;
    import android.view.Menu;
    import android.view.View;
    
    public class SecondActivity extends Activity {
    
    	@Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_second);
                
        }
        
        public void goMain(View v){
        	//Intent去设置要跳转的页面
            Intent intent = new Intent(this, MainActivity.class);
            //跳转
            startActivity(intent);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    .java 代码如上, .xml 代码和跳转代码相同。



    三、Activity(页面)的生命周期

    在这里插入图片描述

    在这里插入图片描述

    测试:(通过重写方法显示其方法调用过程)

    package com.example.ycy;
    
    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Toast;
    
    public class MainActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
                
            Toast.makeText(this, "onCreate", 0).show();
        }
        
        @Override
    	protected void onStart() {
    		// TODO Auto-generated method stub
    		Toast.makeText(this, "onStart", 0).show();
    		super.onStart();
    	}
    	
    	@Override
    	protected void onResume() {
    		// TODO Auto-generated method stub
    		Toast.makeText(this, "onResume", 0).show();
    		super.onResume();
    	}
    	
    	@Override
    	protected void onRestart() {
    		// TODO Auto-generated method stub
    		Toast.makeText(this, "onRestart", 0).show();
    		super.onResume();
    	}
    	
    	@Override
    	protected void onPause() {
    		// TODO Auto-generated method stub
    		Toast.makeText(this, "onPause", 0).show();
    		super.onPause();
    	}
        
        public void goSecond(View v){
        	//Intent去设置要跳转的页面
            Intent intent = new Intent(this, SecondActivity.class);
            //跳转
            startActivity(intent);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53

    效果:

    启动APP:

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    当转到新的界面:

    在这里插入图片描述

    在这里插入图片描述

    退回原来界面:

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    退出页面:

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

  • 相关阅读:
    关于pycharm怎么设置中文、背景图、快捷键的一些小Tips
    java理论知识之Kafka
    走近高德驾车ETA(预估到达时间)
    【Java实现图书管理系统】
    iOS开发之Undefined symbol:_OBJC_CLASS_$_****
    分布式组件 nacos使用
    自定义注解打印日志与耗时
    黑马JVM总结(三十)
    m3u8视频播放HTML
    【21天学习挑战赛】希尔排序
  • 原文地址:https://blog.csdn.net/qq_62361050/article/details/126110120