欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android编程中Intent实现页面跳转功能详解

程序员文章站 2023-11-21 20:10:58
本文实例讲述了android编程中intent实现页面跳转功能。分享给大家供大家参考,具体如下: 安卓四大组件:activity、service、broadcast re...

本文实例讲述了android编程中intent实现页面跳转功能。分享给大家供大家参考,具体如下:

安卓四大组件:activity、service、broadcast receiver、content provider

intent实现页面之间跳转

1、无返回值

startactivity(intent)

2、有返回值

startactivityforresult(intent,requestcode);
onactivityresult(int requestcode,int resultcode,intent data)
setresult(resultcode,data);

factivity.java

package com.example.hello;
import android.app.activity;
import android.content.context;
import android.content.intent;
import android.os.bundle;
import android.view.view;
import android.view.view.onclicklistener;
import android.widget.button;
import android.widget.textview;
public class factivity extends activity{
  private button bt1;
  private context mcontext;
  private button bt2;
  private textview tv;
  @override
  protected void oncreate(bundle savedinstancestate) {
    super.oncreate(savedinstancestate);
    setcontentview(r.layout.factivity);
    /*
     * 通过点击bt1实现页面之间的跳转
     * 1.startactivity来实现跳转
     * 1>初始换intent
     */
    mcontext = this;
    bt1 = (button) findviewbyid(r.id.button1_first);
    bt2 = (button) findviewbyid(r.id.button2_second);
    tv = (textview) findviewbyid(r.id.textview1);
    //注册点击事件
    bt1.setonclicklistener(new onclicklistener() {
      @override
      public void onclick(view v) {
        /**
         * 第一个参数,上下文对象this
         * 第二个参数,目标文件
         */
        intent intent = new intent(mcontext, sactivity.class);
        startactivity(intent);
      }
    });
    /*
     * 通过startactivityforresult
     * 第二个参数是请求的一个标识
     */
    bt2.setonclicklistener(new onclicklistener() {
      @override
      public void onclick(view v) {
        intent intent = new intent(mcontext, sactivity.class);
        startactivityforresult(intent, 1);
      }
    });
  }
  /*
   * 通过startactivityforresult 跳转,接受返回数据的方法
   * requestcode:请求标识
   * resultcode:第二个页面返回的标识
   * data 第二个页面回传的数据
   */
  @override
  protected void onactivityresult(int requestcode, int resultcode, intent data) {
    super.onactivityresult(requestcode, resultcode, data);
    if (requestcode == 1 && resultcode == 2) {
      string content = data.getstringextra("data");
      tv.settext(content);
    }
  }
}

factivity.xml

<?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/button1_first"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="第一种启动方式" />
  <button
    android:id="@+id/button2_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.java

package com.example.hello;
import android.app.activity;
import android.content.intent;
import android.os.bundle;
import android.view.view;
import android.view.view.onclicklistener;
import android.widget.button;
public class sactivity extends activity{
  private button bt;
  private string content = "你好";
  @override
  protected void oncreate(bundle savedinstancestate) {
    super.oncreate(savedinstancestate);
    setcontentview(r.layout.sactivity);
    /*
     * 第二个页面什么时候回传数据给第一个页面
     * 回传到第一个页面的,实际上是一个intent对象
     */
    bt = (button) findviewbyid(r.id.button1);
    bt.setonclicklistener(new onclicklistener() {
      @override
      public void onclick(view v) {
        intent data = new intent();
        data.putextra("data", content);
        setresult(2, data);
        //结束当前页面
        finish();
      }
    });
  }
}

sactivity.xml

<?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/button1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="button" />
</linearlayout>

androidmanifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.example.hello"
  android:versioncode="1"
  android:versionname="1.0" >
  <uses-sdk
    android:minsdkversion="8"
    android:targetsdkversion="21" />
  <application
    android:allowbackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/apptheme" >
    <activity
      android:name=".mainactivity"
      android:label="@string/app_name" >
    </activity>
    <activity
      android:name=".factivity"
      android:label="@string/app_name" >
      <!-- 首启动项 -->
      <intent-filter>
        <action android:name="android.intent.action.main" />
        <category android:name="android.intent.category.launcher" />
      </intent-filter>
    </activity>
    <activity
      android:name=".sactivity"
      android:label="@string/app_name" >
    </activity>
  </application>
</manifest>

用浏览器打开网页

uri uri = uri.parse("http://www.baidu.com");
intent intent = new intent(intent.action_view, uri);
startactivity(intent);

更多关于android相关内容感兴趣的读者可查看本站专题:《android图形与图像处理技巧总结》、《android开发入门与进阶教程》、《android调试技巧与常见问题解决方法汇总》、《android基本组件用法总结》、《android视图view技巧总结》、《android布局layout技巧总结》及《android控件用法总结

希望本文所述对大家android程序设计有所帮助。