GVKun编程网logo

Android studio实现两个窗口之间传递信息信息:intent(androidstudio两个界面的信息交互)

12

对于想了解Androidstudio实现两个窗口之间传递信息信息:intent的读者,本文将提供新的信息,我们将详细介绍androidstudio两个界面的信息交互,并且为您提供关于AndroidIn

对于想了解Android studio实现两个窗口之间传递信息信息:intent的读者,本文将提供新的信息,我们将详细介绍androidstudio两个界面的信息交互,并且为您提供关于Android Intent Activity之间传递数据、Android Studio Intent使用(显式、隐式)、Android Studio 之 通过 Intent 完成点击按钮实现页面跳转、Android Studio 使用Intent的有价值信息。

本文目录一览:

Android studio实现两个窗口之间传递信息信息:intent(androidstudio两个界面的信息交互)

Android studio实现两个窗口之间传递信息信息:intent(androidstudio两个界面的信息交互)

intent介绍

  1. 那我们到底是怎么从一个窗口跳转到另个窗口的,一个窗口的信息是怎么传递给另一个窗口的呢?没错,就是通过intent。下面我们来简单的介绍一下intent。
  2. Android中使用Intent的方式有两种,分别为显式Intent和隐式Intent。
//显式intent(这一个代码块,只介绍一个窗口怎么跳到另一个窗口)
//方法一:
//创建Intent对象,指定启动的类名。就是如果intent对象被启动那么窗口就会从MainActivity所对应的
//窗口跳转到SecondActivity所对应的窗口

SecondActivity Intent intent=new Intent(MainActivity.this, SecondActivity.class); 

//启动intent

startActivity(intent);

//方法二:除了通过指定类名的方式来跳转窗口外,显式Intent还可以根据目标组件的包名、全路径来指
//定要跳转的窗口。
//setClassName(“包名”,“类的全路径名称”);
intent.setClassName(“com.jxust.cn”,“com.jxust.cn.chapter_shengtime”);
//启动Activity
startActivity(intent);


//隐式intent(我不懂,但我把别人的笔记放在下面):
在程序中没有明确指定需要启动的Activity,Android系统会根据在Androidmanifest.xml文件当中设置
//的动作(action)、类别(category)、数据(Uri和数据类型)来启动合适的组件。

<activity android:name=".MainActivity">
  <intent-filter>
<!—设置action属性,根据name设置的值来指定启动的组件-->
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

//说明:<action>标签指定了当前Activity可以响应的动作为android.intent.action.MAIN,而
//<category>标签则包含了一些类别信息,只有当这两者中的内容同时匹配时,Activity才会启动。
ntent intent=new Intent();
Intent.setAction(“android.intent.action.MAIN”);
StartActivity(intent);
//窗口和窗口之间的跳转实现了,那么窗口和窗口之间的信息怎么传递?下面我们来介绍一下
Intent intent=new Intent(this,SecondActivity.class);
//传递参数
intent.putExtra(键, 值);//“值“可以是任意类型的数据,”键“就是给“值”取一个名字就叫“键”,
                       //“键”可以用来索引
startActivity(intent);



如果需要传递的参数比多时,就需要使用putExtras()方法传递数据,该方法传递的是Bundle对象,具体的代码如下:
Intent intent=new Intent(this,SecondActivity.class);
Bundle bundle=new Bundle();
bundle.putString("phone","123456");
bundle.putString("sex","男");
bundle.putString("age","18"); 
intent.putExtras(bundle);
startActivity(intent); 




//被启动的窗口怎么接受到数据的呢?
Intent intent=this.getIntent();
String receive_str=intent.getStringExtra(键);//”键“在这里就被用到了
利用onActivityResult获取跳转到的目标窗口的返回值:


如果启动一个Activity,并且希望返回结果给当前的Activity,那么可以使用startActivityForResult()方法来启动Activity


startActivityForResult(Intent intent, int requestCode)
第一个参数为普通Intent,指定要启动的NewActivity
第二个参数为请求码,即调用startActivityForResult()传递过去的值


为了获取被启动Activity的返回结果,需要执行以下两个步骤:
1.被启动的Activity需要调用setResult(int resultCode,Intent data)方法设置返回的结果数据
2.跳转前的Activity要重写onActivityResult(int requestCode,int resultCode,Intent intent)方法接收结果数据


onActivityResult(int requestCode, int resultCode, Intent data) 
第一个参数为请求码,即调用startActivityForResult()传递过去的值
第二个参数为结果码,结果码用于标识返回数据来自哪个新Activity
第三个参数为返回的数据,来自NewActivity
利用onActivityResult获取返回值与intent.getStringExtra获取返回值的区别?
坑,未填。。。。。。。。。

我们来实战一下吧。。。

目标:

  1. 做一个登入和注册的界面:在登入界面中点击注册按钮,就跳转到注册界面。注册完了之后,点击完成,就会跳转到登入页面。此时的登入页面已经自动填写了已注册的信息。点击登入,跳转到一个界面上,这个界面上显示“欢迎 小明”

  2. 我们要创建三个窗口,那我们就要创建三个activity,三个layout。三个activity分别是:MainActivity(登入) Activity2(点击登入后跳转到的欢迎界面)Activity3(注册)。这个三个activity分别对应三个layout为:activity_main、mylayout2mylayout

 

1,在MainActivity中填入:

package com.example.lesson3;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;

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


public class MainActivity extends AppCompatActivity {

    //创建两个Button用于登入和注册,创建两个EditText,用于输入账号和密码
    private Button btnLogin,btnReg;
    private EditText edtName,edtPwd;
    private final int REQUEST_CODE=101;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btnLogin = (Button) findViewById(R.id.btnLogin);
        btnReg = (Button) findViewById(R.id.btnReg);
        edtName = (EditText) findViewById(R.id.edtName);
        edtPwd = (EditText) findViewById(R.id.edtPwd);

        //点击登入,向Activity2传递用户名
        btnLogin.setonClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent(MainActivity.this, Activity2.class);
                String name=edtName.getText().toString();
                String pwd=edtPwd.getText().toString();
                intent.putExtra("name",name);
                intent.putExtra("pwd",pwd);
                startActivity(intent);
            }
        });

        //点击注册,跳转到Activity3。进行注册,
        btnReg.setonClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent(MainActivity.this, Activity3.class);
                startActivityForResult(intent,REQUEST_CODE);
            }
        });
    }



    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode==REQUEST_CODE){
            String name=data.getStringExtra("name");
            String pwd=data.getStringExtra("pwd");
            edtName.setText(name);
            edtPwd.setText(pwd);
        }
    }

}

2,在Activity3中填入:

package com.example.lesson3;

import android.app.Activity;

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

public class Activity3 extends Activity {
    private Button btnReg;
    private EditText edtName, edtPwd, edtRePwd;
    private static final int RESULT_CODE = 101;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.mylayout);
        btnReg = (Button) findViewById(R.id.btnReg);
        edtName = (EditText) findViewById(R.id.edtName);
        edtPwd = (EditText) findViewById(R.id.edtPwd);
        edtRePwd = (EditText) findViewById(R.id.edtRepwd);

        btnReg.setonClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String name = edtName.getText().toString();
                String pwd = edtPwd.getText().toString();
                String repwd = edtRePwd.getText().toString();
                if (!"".equals(pwd) && pwd.equals(repwd)) {
                    //获得启动该Activity的Intent对象
                    Intent intent = getIntent();
                    intent.putExtra("name", name);
                    intent.putExtra("pwd", pwd);
                    //设置结果码,并设置结束后返回的Activity
                    setResult(RESULT_CODE, intent);
                    //结束RegActivity
                    Activity3.this.finish();
                } else {
                    Toast.makeText(Activity3.this, "密码输入不一致", Toast.LENGTH_LONG).show();
                }
            }
        });
    }
}

3,在Activity2中填入:

package com.example.lesson3;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;

public class Activity2 extends Activity {
    private TextView welcome;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.mylayout2);
        welcome=(TextView)findViewById(R.id.welcome);
        Intent intent=this.getIntent();
        String name=intent.getStringExtra("name");
        welcome.setText("Hello "+name);
    }
}

4,在在AndroidManifest.xml中

4,在AndroidManifest.xml中
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.lesson3">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

//下面两个activity为新添加的:
       <activity android:name=".Activity3">
        </activity>
        <activity android:name=".Activity2">
        </activity>
    </application>

</manifest>

5,在layout拖拽,形成界面

 

 

Android Intent Activity之间传递数据

Android Intent Activity之间传递数据

向下传递

FirstActivity → ThirdActivity

FirstActivity

button_1.setonClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //数据样式
                String data = "Hello Next!";
                //显式Intent
                Intent intent = new Intent(FirstActivity.this,ThirdActivity.class);
                //以键值对的方式存入数据
                intent.putExtra("FirstActivity_data",data);
                //启动Intent
                startActivity(intent);
            }
        });

ThirdActivity

//获取启动此Activity的Intent
Intent intent = getIntent();
//根据传递的数据类型选择相应的Extra方法,传入对应的键,获取值
String data = intent.getStringExtra("FirstActivity_data");
//输出日志查看
Log.d(TAG, "onCreate: "+data);

向上传递

ThirdActivity → FirstActivity

FirstActivity

private static final String TAG = "FirstActivity";
    //重写onActivityResult方法,接收返回数据
    //requestCode:启动ThirdActivity的请求码
    //resultCode:ThirdActivity返回活动FirstActivity的返回码
    //data:带有返回数据的intent
    @Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    //匹配请求码
    switch (requestCode) {
        case 1:
            //匹配返回码
            if (resultCode == RESULT_OK) {
                //取出数据
                String return_data = data.getStringExtra("ThirdActivity_data");
                //输出日志查看
                Log.d(TAG, "onActivityResult: "+return_data);
            }
        default:
    }
}
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.first_layout);
    Button button_1 = findViewById(R.id.button_1);
    button_1.setonClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            //显式 Intent
            Intent intent = new Intent(FirstActivity.this,ThirdActivity.class);
            //启动Intent,并设置请求码为1
            startActivityForResult(intent,1);
        }
    });
}

ThirdActivity

按键

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.third_layout);
    Button button_1 = findViewById(R.id.third_button_1);
    button_1.setonClickListener(new View.OnClickListener() {
    @Override
    	public void onClick(View v) {
            //数据样式
            String data = "Hello My Is ThirdActivity.onCreate.onClick";
            //创建一个空的intent
            Intent intent = new Intent();
            //将数据按键值对的方式存储于intent
            intent.putExtra("ThirdActivity_data",data);
            //为该intent设置返回码
            setResult(RESULT_OK,intent);
            //销毁该Activity
            finish();
        }
    });
}

Back

public void onBackpressed() {
    String data = "Hello My Is ThirdActivity.onBackpressed";
    Intent intent = new Intent();
    intent.putExtra("ThirdActivity_data",data);
    setResult(RESULT_OK,intent);
    finish();
}

Android Studio Intent使用(显式、隐式)

Android Studio Intent使用(显式、隐式)

https://blog.csdn.net/u012005313/article/details/47006689

使用Intent能够使程序在不同活动中跳转,意及能够使用不同界面。Intent用法分为显示和隐式

Intent概念:Intent是Android程序中各组件之间进行交互的一种重要方式,不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据。

Intent一般可被用于启动活动启动服务、以及发送广播等场景

 

##########################################################

前期准备工作

1.创建一个项目(IntentTest),使用一个默认的空的活动MainActivity

2.修改activity_main.xml布局文件

 

  1.  
    <RelativeLayout xmlns:android= "http://schemas.android.com/apk/res/android"
  2.  
    xmlns:tools= "http://schemas.android.com/tools" android:layout_width="match_parent"
  3.  
    android:layout_height= "match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
  4.  
    android:paddingRight= "@dimen/activity_horizontal_margin"
  5.  
    android:paddingTop= "@dimen/activity_vertical_margin"
  6.  
    android:paddingBottom= "@dimen/activity_vertical_margin" tools:context=".MainActivity">
  7.  
     
  8.  
    <Button
  9.  
    android:id= "@+id/button_1"
  10.  
    android:layout_width= "match_parent"
  11.  
    android:layout_height= "wrap_content"
  12.  
    android:text= "Button 1"
  13.  
    />
  14.  
     
  15.  
    </RelativeLayout>

 

 

2.新建一个活动SecondActivity

Activity Name = SecondActivity 

Layout Name = activity_second

 

3.修改activity_second.xml布局文件

代码如下:

 

  1.  
    <?xml version= "1.0" encoding="utf-8"?>
  2.  
    <LinearLayout xmlns:android= "http://schemas.android.com/apk/res/android"
  3.  
    android:layout_width= "match_parent" android:layout_height="match_parent">
  4.  
     
  5.  
    <Button
  6.  
    android:id= "@+id/button_2"
  7.  
    android:layout_width= "match_parent"
  8.  
    android:layout_height= "wrap_content"
  9.  
    android:text= "Button 2"
  10.  
    />
  11.  
     
  12.  
    </LinearLayout>

解释:定义一个按钮,按钮上文本显示为Button 2

 

4.修改SecondActivity.java类    

代码如下:

 

  1.  
    public class SecondActivity extends Activity {
  2.  
     
  3.  
    @Override
  4.  
    protected void onCreate(Bundle savedInstanceState) {
  5.  
    super.onCreate(savedInstanceState);
  6.  
    requestWindowFeature(Window.FEATURE_NO_TITLE); //隐藏标题栏
  7.  
    setContentView(R.layout.activity_second);
  8.  
    }

5.在AndroidManifest.xml中为SecondActivity活动进行注册

 

在<application></application>之间加入

 

  1.  
    <activity
  2.  
    android:name= ".SecondActivity"
  3.  
    android:label= "@string/title_activity_second" >
  4.  
    </activity>


note:SecondActivity不是主活动,不需要配置<intent-filter>标签里的内容

##############################################

 

显示使用Intent

Intent有多个构造函数的重载,其中一个是Intent(Context packageContext, Class<?> cls)

该构造函数接收两个参数,第一个参数Context要求提供一个启动活动的上下文

第二个参数Class则是指定想要启动的目标活动

 

Activity类中提供了一个startActivity()方法,这个方法是专门用于启动活动,它接收一个Intent参数

我们将构建好的Intent传入startActivity()方法就可以启动目标活动

 

1.修改MainActivity类中按钮的点击事件

 

  1.  
    @Override
  2.  
    protected void onCreate(Bundle savedInstanceState) {
  3.  
    super.onCreate(savedInstanceState);
  4.  
    setContentView(R.layout.activity_main);
  5.  
     
  6.  
    Button button=(Button)findViewById(R.id.button_1);
  7.  
    button.setOnClickListener( new View.OnClickListener() {
  8.  
    @Override
  9.  
    public void onClick(View v) {
  10.  
    Toast.makeText(MainActivity. this, "You click Button 1", Toast.LENGTH_SHORT).show();
  11.  
    Intent intent= new Intent(MainActivity.this, SecondActivity.class);
  12.  
    startActivity(intent);
  13.  
    }
  14.  
    });
  15.  
    }

 

2.修改SecondActivity类中按钮的点击事件

 

  1.  
    @Override
  2.  
    protected void onCreate(Bundle savedInstanceState) {
  3.  
    super.onCreate(savedInstanceState);
  4.  
    requestWindowFeature(Window.FEATURE_NO_TITLE);
  5.  
    setContentView(R.layout.activity_second);
  6.  
     
  7.  
    Button button=(Button)findViewById(R.id.button_2);
  8.  
    button.setOnClickListener( new View.OnClickListener() {
  9.  
    @Override
  10.  
    public void onClick(View v) {
  11.  
    Toast.makeText(SecondActivity. this, "You Click Button 2", Toast.LENGTH_SHORT).show();
  12.  
    finish();
  13.  
    }
  14.  
    });
  15.  
    }


点击运行按钮,截图如下:

 

程序生成后,手机出现界面1,点击button1按钮,界面跳转到界面2,点击button2,界面跳转会界面1

 

###########################################

隐式使用Intent

隐式Intent通过指定一系列更为抽象的action和category等信息,然后交由系统去分析这个Intent,并帮助我们找出合适的活动去启动

 

1.修改AndroidManifest.xml文件,修改活动如下:

 

  1.  
    <activity
  2.  
    android:name= ".SecondActivity"
  3.  
    android:label= "@string/title_activity_second" >
  4.  
    <intent-filter>
  5.  
    <action android:name= "com.example.activitytest.ACTION_START" />
  6.  
    <category android:name= "android.intent.category.DEFAULT" />
  7.  
    </intent-filter>
  8.  
    </activity>

在<action>标签中指明当前活动可以响应com.example.activitytest.ACTION_START这个action,而<category>标签则包含了一些附加信息,更精确地指明了当前的活动能够响应的Intent中还可能带有的category。

 

只有<action>和<category>中的内容同时能够匹配上Intent中指定的action和category,这个活动才能响应Intent

2.修改MainActivity类中按钮的点击事件

 

  1.  
    @Override
  2.  
    protected void onCreate(Bundle savedInstanceState) {
  3.  
    super.onCreate(savedInstanceState);
  4.  
    setContentView(R.layout.activity_main);
  5.  
     
  6.  
    Button button=(Button)findViewById(R.id.button_1);
  7.  
    button.setOnClickListener( new View.OnClickListener() {
  8.  
    @Override
  9.  
    public void onClick(View v) {
  10.  
    Toast.makeText(MainActivity. this, "You click Button 1", Toast.LENGTH_SHORT).show();
  11.  
    //Intent intent=new Intent(MainActivity.this, SecondActivity.class);
  12.  
    Intent intent= new Intent("com.example.activitytest.ACTION_START");
  13.  
    startActivity(intent);
  14.  
    }
  15.  
    });
  16.  
    }

note: android.intent.category.DEFAULT是一种默认的category,在调用startActivity()方法的时候会自动将这个category添加到Intent中

 

点击运行按钮,程序成功运行

#######################################################3

 

ADD:每个Intent中只能指定一个action,但却能够指定多个category.

上述的Intent中只有一个默认的category,再增加一个测试一下

1.修改AndroidManifest.xml文件

 

  1.  
    <activity
  2.  
    android:name= ".SecondActivity"
  3.  
    android:label= "@string/title_activity_second" >
  4.  
    <intent-filter>
  5.  
    <action android:name= "com.example.activitytest.ACTION_START" />
  6.  
    <category android:name= "android.intent.category.DEFAULT" />
  7.  
    <category android:name= "com.example.activitytest.MY_CATEGORY" />
  8.  
    </intent-filter>
  9.  
    </activity>
  10.  
    </application>


2.修改MainActivity类中按钮的点击事件

 

 

  1.  
    Button button=(Button)findViewById(R.id.button_1);
  2.  
    button.setOnClickListener( new View.OnClickListener() {
  3.  
    @Override
  4.  
    public void onClick(View v) {
  5.  
    Toast.makeText(MainActivity. this, "You click Button 1", Toast.LENGTH_SHORT).show();
  6.  
    //Intent intent=new Intent(MainActivity.this, SecondActivity.class);
  7.  
    Intent intent= new Intent("com.example.activitytest.ACTION_START");
  8.  
    intent.addCategory( "com.example.activitytest.MY_CATEGORY");
  9.  
    startActivity(intent);
  10.  
    }



 

运行程序,成功

 

#################################################

隐式Intent的更多用法

使用隐式Intent,不仅可以启动自己程序内部的活动,还可以启动其他程序的活动,这使得Android多个应用程序之间的功能共享称为可能

 

例如:在应用程序中展示一个网页

修改MainActivity中按钮点击事件

 

  1.  
    button.setOnClickListener( new View.OnClickListener() {
  2.  
    @Override
  3.  
    public void onClick(View v) {
  4.  
    Toast.makeText(MainActivity. this, "You click Button 1", Toast.LENGTH_SHORT).show();
  5.  
    //Intent intent=new Intent(MainActivity.this, SecondActivity.class);
  6.  
    //Intent intent=new Intent("com.example.activitytest.ACTION_START");
  7.  
    //intent.addCategory("com.example.activitytest.MY_CATEGORY");
  8.  
     
  9.  
    Intent intent= new Intent(Intent.ACTION_VIEW);
  10.  
    intent.setData(Uri.parse( "http://www.baidu.com"));
  11.  
    startActivity(intent);
  12.  
    }
  13.  
    });

程序中首先指定Intent的action是Intent.ACTION_VIEW,这是一个Android系统内置的动作,其常量值为android.intent.action.VIEW.

 

然后通过Uri.parse()方法,将一个网址字符串解析成一个Uri对象,再调用Intent的setData()方法将这个Uri对象传递进去

 

此时重新运行程序,在MainActivity界面点击按钮就可以打开系统浏览器

 

例如:在程序中调用系统拨号界面

修改MainActivity中按钮点击事件

 

  1.  
    Button button=(Button)findViewById(R.id.button_1);
  2.  
    button.setOnClickListener( new View.OnClickListener() {
  3.  
    @Override
  4.  
    public void onClick(View v) {
  5.  
    Toast.makeText(MainActivity. this, "You click Button 1", Toast.LENGTH_SHORT).show();
  6.  
    //Intent intent=new Intent(MainActivity.this, SecondActivity.class);
  7.  
    //Intent intent=new Intent("com.example.activitytest.ACTION_START");
  8.  
    //intent.addCategory("com.example.activitytest.MY_CATEGORY");
  9.  
     
  10.  
    Intent intent= new Intent(Intent.ACTION_DIAL);
  11.  
    intent.setData(Uri.parse( "tel:10086"));
  12.  
    startActivity(intent);
  13.  
    }
  14.  
    });

 

Intent.ACTION_DIAL是一个Android系统的内置动作

--------------------- 本文来自 编号1993 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/u012005313/article/details/47006689?utm_source=copy 

Android Studio 之 通过 Intent 完成点击按钮实现页面跳转

Android Studio 之 通过 Intent 完成点击按钮实现页面跳转

 

•Intent 简介

  Intent 是 Android 程序中各组件之间进行交互的一种重要方式;

  它不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据。

  Intent 有多个构造函数,其中一个是 Intent(Context packageContext, Class<?> cls):

    • 第一个参数 Context 要求提供一个启动活动的上下文
    • 第二个参数 Class 则是指定想要启动的目标活动

  通过这个构造函数可以构建出 Intent 的 “意图”;

•设置跳转界面

  新建一个 Empty Activity,命名为 AnotherActivity;

  修改 activity_another.xml 中的代码;

activity_another.xml

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

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="This is Another Activity!"
        android:textSize="20sp"
        android:textColor="@color/black"/>

</RelativeLayout>

  该代码只放置了一个用于显示文本的 TextView;

 

•跳转前的准备工作

  在 activity_main.xml 中创建一个 Button 控件,并设置其 id 为 btn,代码如下;

activity_main.xml

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

    <Button
        android:id="@+id/btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="跳转"
        />

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

    <Button
        android:id="@+id/btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="跳转"
        />

</RelativeLayout>

•使用 Intent 完成跳转

  接下来修改 MainActivity.java 中的代码;

MainActivity.java

public class MainActivity extends AppCompatActivity {

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

        mBtn = findViewById(R.id.btn);
        mBtn.setonClickListener(new View.OnClickListener(){

            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this,AnotherActivity.class);
                startActivity(intent);
            }
        });
    }
}

  在 MainActivity.java 中创建一个 Button 变量 mBtn;

  通过 findViewById(R.id.btn) 找到 btn 这个组件;

  创建一个新的 Activity,姑且命名为 nextActivity;

  然后,通过为 mBtn 设置点击事件完成界面跳转;

mBtn.setonClickListener(new View.OnClickListener(){

    public void onClick(View view){
        Intent intent=new Intent(MainActivity.this,AnotherActivity.class);
        startActivity(intent);
    }

});

  通过  Intent intent=new Intent(); ,我们构造出了一个 Intent;

  传入 MainActivity.this 作为上下文,传入 AnotherActivity.class 作为活动目标;

  这样我们的意图就非常明显了:在 MainActivity 这个活动的基础上打开 AnotherActivity 这个活动;

  然后通过 startActivity() 方法来执行这个 Intent。

•运行效果

  

•其他跳转方式

  除了使用  Intent intent=new Intent(MainActivity.this,AnotherActivity.class); 完成跳转外,

  我们还可以这么写:

        mBtn.setonClickListener(new View.OnClickListener(){

            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.setClass(MainActivity.this,AnotherActivity.class);
                startActivity(intent);
            }
        });

  通过  intent.setClass() 方法完成跳转,效果是一样的;

 

Android Studio 使用Intent

Android Studio 使用Intent

1.显式Intent

Intent intent=new Intent(yzj.this,MainActivity.class);//当前活动的实例,要去的实例
                startActivity(intent);//注入下一个活动

2.隐式Intent

Intent intent=new Intent("A");
                intent.addCategory("B");
<activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="A" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="B" />
            </intent-filter>
        </activity>

代码要添加筛选 确认那个活动可以进那个活动 

隐式的调用系统浏览器

Intent intent=new Intent(Intent.ACTION_VIEW);
                intent.setData(Uri.parse("http://www.baidu.com"));

隐式的调用电话簿

Intent intent=new Intent(Intent.ACTION_DIAL);//内置对象
                intent.setData(Uri.parse("TEL:10000"));

向下一层传递接收数据

intent.putExtra("h","123");//向下一层传递数据
Intent te=getIntent();//获取传入的值 object 类型 在首次加载地方写入
                String data=intent.getStringExtra("h");//获取键值 感觉类型用不同的类型去接受

返回数据给上一次 要在 上一层 重写onActivityResuly()

在返回是销毁页面

startActivityForResult(intent,1); 返回对象 标识位1
  @Override
    public void onBackPressed() {
             Intent intent=new Intent();
             intent.putExtra("","");//存入值
             setResult(RESULT_OK,intent);
             finish();//销毁
    }
 @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {

        if (requestCode==1)
        {
            if (resultCode==RESULT_OK)
            {
                String resturn=data.getStringExtra("123"); //获取值
            }
        }
    }

 

今天关于Android studio实现两个窗口之间传递信息信息:intentandroidstudio两个界面的信息交互的介绍到此结束,谢谢您的阅读,有关Android Intent Activity之间传递数据、Android Studio Intent使用(显式、隐式)、Android Studio 之 通过 Intent 完成点击按钮实现页面跳转、Android Studio 使用Intent等更多相关知识的信息可以在本站进行查询。

本文标签: