Android Intent实现页面跳转的两种方法

本文实例为大家分享了Intent实现页面跳转的两种的方法,供大家参考,具体内容如下

下图中两个不同的方法就是两种页面之间跳转的情况

1).跳转不返回数据

2).跳转返回数据

实例:

第一种启动方式(跳转不返回数据)

第二种启动方式(跳转返回数据)

先看第一种:

点击第一种启动方式按钮会出现右边的图,然后再点击Button按钮返回左边的界面,TextView中的内容没变。

再看第二种启动方式

不同的是,点击Button按钮返回左边的界面,TextView中的内容变成了你好。

下面是所有代码

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.example.lenovo.intent">

  <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">

    </activity>
    <activity android:name="com.example.lenovo.intent.firstactivity">
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
    </activity>
    <activity android:name="com.example.lenovo.intent.Secondactivity">

    </activity>
  </application>

</manifest>

factivity

<?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"
  >

  <Button
    android:id="@+id/bt1__first"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="第一种启动方式" />

  <Button
    android:id="@+id/bt2__second"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="第二种启动方式" />

  <TextView
    android:id="@+id/textView1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="吧第二个页面回传的数据显示出来" />

</LinearLayout>

sactivity

<?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">

  <Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:text="Button" />
</LinearLayout>

firstactivity.java

package com.example.lenovo.intent; 

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

/**
 * Created by lenovo on 2018/2/27.
 */ 

public class firstactivity extends Activity {
  private Button bt1;
  private Button bt2;
  private TextView tv;
  @Override
  protected void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.factivity); 

    /*
      通过点击bt1实现界面之间的跳转
      1.通过startActivity的方式来实现
      1>初始Intent(意图)
     */ 

    bt1=(Button) findViewById(R.id.bt1__first);
    bt2=(Button)findViewById(R.id.bt2__second);
    tv=(TextView) findViewById(R.id.textView1);
    //给bt1添加点击事件
    bt1.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View view) {
        /*
        第一个参数:上下文对象this
        第二个参数:目标文件
         */
        Intent intent = new Intent(firstactivity.this,Secondactivity.class);
        startActivity(intent); 

      }
    }); 

    /*
    2.通过startActivityForResult的方式来实现
     */
    //给bt2添加点击事件
    bt2.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View view) {
        Intent intent = new Intent(firstactivity.this,Secondactivity.class); 

        /*
        第一个参数:Intent对象
        第二个参数:请求的一个标识
         */
        startActivityForResult(intent,1);
      }
    });
  } 

  /*
  通过startActivityForResult的方式接受返回数据的方法
  requestCode:请求的标志,给每个页面发出请求的标志不一样,这样以后通过这个标志接受不同的数据
  resultCode:这个参数是setResult(int resultCode,Intent data)方法传来的,这个方法用在传来数据的那个页面
   */
  @Override
  protected void onActivityResult(int requestCode,int resultCode ,Intent data){
    super.onActivityResult(requestCode,resultCode,data);
    if(requestCode==1&&resultCode==2){//当请求码是1&&返回码是2进行下面操作
      String content=data.getStringExtra("data");
      tv.setText(content);
    }
  }
}

Secondactivity.java

package com.example.lenovo.intent; 

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

/**
 * Created by lenovo on 2018/2/27.
 */ 

public class Secondactivity extends Activity {
 private Button bt;
 String content="你好";//想返回的内容
 @Override
 protected void onCreate( Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.sactivity); 

  /*
  第二个页面什么时候给第一个页面回传数据
  回传到第一个页面的实际上是一个Intent对象
   */
  bt=(Button) findViewById(R.id.button);
  bt.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View view) {
    Intent data = new Intent();
    //name相当于一个key,content是返回的内容
    data.putExtra("data",content);
    //resultCode是返回码,用来确定是哪个页面传来的数据,这里设置返回码是2
    //这个页面传来数据,要用到下面这个方法setResult(int resultCode,Intent data)
    setResult(2,data);
    //结束当前页面
    finish();
   }
  });
 }
} 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Android Intent实现页面跳转的方法示例

    应朋友们反馈的Android基础薄弱的问题,决定出一套Android基础教程,帮助大家复习,巩固Android基础,今天要讲的是Android中的Intent实现Android间的页面跳转. 增加Acrivity页面时,首先需要在MainActivity中对页面注册,比如 新建被跳转的页面OtherActivity,其对应的xml文件如下 activity_other <?xml version="1.0" encoding="utf-8"?> <

  • Android编程实现全局获取Context及使用Intent传递对象的方法详解

    本文实例讲述了Android编程实现全局获取Context及使用Intent传递对象的方法.分享给大家供大家参考,具体如下: 一.全局获取 Context Android 开发中很多地方需要用到 Context,比如弹出 Toast.启动活动.发送广播.操作数据库-- 由于很多操作都是在活动中进行的,而活动本身就是一个 Context 对象,所以获取 Context 并不是那么困难. 但是,当应用程序的架构逐渐开始复杂起来的时候,很多的逻辑代码都将脱离 Activity 类,由此在某些情况下,获

  • Android使用Intent隐式实现页面跳转

    在上一篇文章中我介绍了使用Intent显式来实现页面向下跳转,接下来这篇文章主要介绍的是使用Intent隐式来实现向上跳转,什么意思呢,就是当我们从第一个页面跳转到第二个页面的时候我们可以从第二个页面跳转回去. 通过查阅文档你会发现Activity中还有一个startActivityForResult()方法也是用于启动活动的,但是这个方法期望在活动销毁的时候能返回一个结果给上一个活动,毫无疑问这就是我们所要达到的效果. startActivityForResult()方法接收2个参数,第一个参

  • Android开发中Intent.Action各种常见的作用汇总

    本文介绍Android中Intent的各种常见作用. 1 Intent.ACTION_MAIN String: android.intent.action.MAIN 标识Activity为一个程序的开始.比较常用. Input:nothing Output:nothing <activity android:name=".Main" android:label="@string/app_name"> <intent-filter> <a

  • Android利用Intent.ACTION_SEND进行分享

    安卓系统本身可以很简便的实现分享功能,因为我们只需向startActivity传递一个ACTION_SEND的Intent,系统就为我们弹出一个应用程序列表.其实在系统的文件管理器中,这应该是我们常用的功能(包括文件的打开Intent.ACTION_VIEW). 下面列出一个简单的分享方式 Intent shareIntent = new Intent(); shareIntent.setAction(Intent.ACTION_SEND); sendIntent.putExtra(Intent

  • Android开发中使用Intent打开第三方应用及验证可用性的方法详解

    本文实例讲述了Android开发中使用Intent打开第三方应用及验证可用性的方法.分享给大家供大家参考,具体如下: Android中提供了Intent机制来协助应用间的交互与通讯.可作为不同组件之间通讯的媒介完成应用之间的交互.这里讨论一下针对Intent打开第三方应用的相关操作. 本文主要记录: ① 使用 Intent 打开第三方应用或指定 Activity 的三种方式 ② 使用上面三种方式时分别如何判断该 Intent 能否被解析 ③ 判断该 Intent 能否被解析中可能出现的遗漏 基础

  • Android 基于IntentService的文件下载的示例代码

    文件下载这种事情是很耗时的.之前使用AsyncTask这样的异步类来做下载,然后切到后台就被干掉.所以打算试试Service.(不过按目前那些系统的尿性,其实Service也分分钟被干掉) 不过,这里并不是直接使用Service类,而是使用的是继承自Service的IntentService. 这个东西有三大好处: 1.他有个任务队列: 2.任务队列执行完后会自动停止: 3.他会起一个独立的线程,耗时操作不会影响你app的主线程. 这么自动化的东西简直省心. 话不多说,开始撸代码. 首先,要建个

  • Android使用Intent.ACTION_SEND分享图片和文字内容的示例代码

    本文讲述了Android版Intent.ACTION_SEND分享图片和文字内容.分享给大家供大家参考,具体如下: 编辑推荐:稀土掘金,这是一个针对技术开发者的一个应用,你可以在掘金上获取最新最优质的技术干货,不仅仅是Android知识.前端.后端以至于产品和设计都有涉猎,想成为全栈工程师的朋友不要错过! 下面的方法只能实现普通的文字分享: private void shareContent() { Intent share = new Intent(android.content.Intent

  • Android中Activity的四种启动模式和onNewIntent()

    写在前面 Activity是Android四大组件之一,用于直接跟用户进行交互,本篇文章将介绍Activity的启动流程.用户启动Activity的方式大致有两种:一种是在桌面点击应用程序的图标,进入应用程序的主界面:另一种是在应用程序中,进入一个新的Activity.前者,桌面其实是系统应用launcher的界面,点击应用程序图标,会进行应用程序的主界面,实质是从一个应用的Activity进入另一个应用Activity. 因此,不管是从桌面进入应用主界面,还是在应用里进入一个新的Activit

  • Android使用Intent显示实现页面跳转

    在学习安卓的最初过程中我们学的都是最基本的一个活动,只有一个活动的应用也太简单了吧,没错我们的最求应该更高点,不管你创建多少个活动,接下里我们介绍的这种方法能解决我们在创建活动之间的跳转. 使用显示Intent 刚入门学习Android的小伙伴们已经能很娴熟的使用Android studio 创建一个项目了,接下来我把我自己创建的目录先展示下 首先创建一个名叫TestIntent的project然后在main--java下面创建了2个类分别是FirstActivity和MainActivity,

随机推荐