实验四:app内页面跳转
简介
“Activity”是Android应用中负责与用户交互的组件,相当于Swing中的JFrame控件,但Jframe本身可以设置布局管理器,即自身可以添加组件,但activity只能通过“setContentView(View)”方法来显示布局文件中已经定义的组件
一、如何创建Activity
① 新建一个Android Studio工程;
② 在新建工程中创建Activity,命名为SecondActivity;
③ 为SecondActivity创建对应的UI界面,并通过setContView()设置layout布局页 面;
④ 完成Activity的注册。
1.布局文件
<?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"android:background="@drawable/login_back"><TextViewandroid:id="@+id/textView"android:layout_width="match_parent"android:layout_height="74dp"android:layout_alignParentStart="true"android:layout_alignParentEnd="true"android:layout_alignParentBottom="true"android:layout_centerInParent="true"android:layout_marginStart="-4dp"android:layout_marginEnd="4dp"android:layout_marginBottom="550dp"android:backgroundTint="#D9E0E4"android:text="请选择登录方式:"android:textColor="#EAE4E4"android:textSize="24sp" /><Buttonandroid:id="@+id/button1"android:layout_width="240dp"android:layout_height="wrap_content"android:layout_alignParentStart="true"android:layout_alignParentEnd="true"android:layout_alignParentBottom="true"android:layout_centerHorizontal="true"android:layout_marginStart="82dp"android:layout_marginEnd="89dp"android:layout_marginBottom="424dp"android:text="微信登录 -->" /><Buttonandroid:id="@+id/button2"android:layout_width="240dp"android:layout_height="wrap_content"android:layout_alignParentStart="true"android:layout_alignParentEnd="true"android:layout_alignParentBottom="true"android:layout_centerHorizontal="true"android:layout_marginStart="85dp"android:layout_marginEnd="86dp"android:layout_marginBottom="358dp"android:text="手机验证码登录 -->" /><Buttonandroid:id="@+id/button0"android:layout_width="237dp"android:layout_height="wrap_content"android:layout_alignParentStart="true"android:layout_alignParentEnd="true"android:layout_alignParentBottom="true"android:layout_centerHorizontal="true"android:layout_marginStart="84dp"android:layout_marginEnd="89dp"android:layout_marginBottom="498dp"android:text="QQ登录 -->" /></RelativeLayout>
2.对应activity在AndroidManifest.xml文件里注册
3.布局效果:
二、如何实现跳转——intent的使用
1.显示intent的使用
1.1通过显式Intent设置当前上下文环境和目标Activity,实现第一种页面跳转
eg:通过点击首页QQ登录,跳转到QQ信息登录页面
①.布局文件
<?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:gravity="center_horizontal"android:orientation="vertical"><ImageViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="80dp"android:src="@drawable/qq" /><FrameLayoutandroid:layout_width="350dp"android:layout_height="70dp"android:layout_marginTop="50dp" ><EditTextandroid:id="@+id/qq_num"android:layout_width="match_parent"android:layout_height="match_parent"android:hint="QQ号/手机号/邮箱"android:inputType="number"android:maxLines="1"android:textSize="20sp"android:gravity="center"/><ImageViewandroid:id="@+id/iv_et_num_delete"android:layout_width="25dp"android:layout_height="25dp"android:layout_gravity="right|center_vertical"android:layout_marginRight="20dp"android:background="@drawable/delete" /></FrameLayout><FrameLayoutandroid:layout_width="350dp"android:layout_height="70dp"android:layout_marginTop="20dp" ><EditTextandroid:id="@+id/qq_pwd"android:layout_width="match_parent"android:layout_height="match_parent"android:hint="输入密码"android:inputType="textPassword"android:maxLines="1"android:textSize="20sp"android:gravity="center"/></FrameLayout><ImageViewandroid:id="@+id/qq_login"android:layout_width="102dp"android:layout_height="35dp"android:layout_marginTop="80dp"android:src="@drawable/go_right" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="50dp"android:layout_marginTop="60dp"android:gravity="center"android:orientation="horizontal"><TextViewandroid:id="@+id/qq_forgetpwd"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="忘记密码"android:textColor="#141313" /><Viewandroid:layout_width="1dp"android:layout_height="10dp"android:layout_marginLeft="50dp"android:background="#141313" /><TextViewandroid:id="@+id/qq_register"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="50dp"android:text="用户注册"android:textColor="#141313" /></LinearLayout>
</LinearLayout>
设想效果:
②.QQ登录页面对应Activity文件
package com.example.test_intent;import android.os.Bundle;import androidx.appcompat.app.AppCompatActivity;public class intent0 extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.qq_login_test);}
}
③.intent使用方法
package com.example.test_intent;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;import androidx.annotation.Nullable;public class SecondActivity extends Activity {//关联界面//重写方法@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.layout_second_activity);//button0:通过显式Intent设置当前上下文环境和目标Activity,实现第一种页面跳转。//button0实例化Button button00 = (Button) findViewById(R.id.button0);//监听按钮button00.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//显示intentIntent intent0 = new Intent(SecondActivity.this,intent0.class);//当前上下文环境;目标类//启动activitystartActivity(intent0);}});
}
④.注册信息
<activity android:name=".intent0"></activity>
1.2 通过显式Intent设置目标Activity所在的包名和类的全路径,实现第二种页面跳转
eg:通过点击第二个按钮,使页面跳转到微信信息登录页面
①.微信登录页面布局文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_height="match_parent"android:layout_width="match_parent"><ImageViewandroid:id="@+id/imageView4"android:layout_width="136dp"android:layout_height="126dp"android:layout_alignParentTop="true"android:layout_alignParentEnd="true"android:layout_marginTop="16dp"android:layout_marginEnd="12dp"app:srcCompat="@drawable/truth" /><TextViewandroid:id="@+id/textView2"android:layout_width="186dp"android:layout_height="48dp"android:layout_alignParentStart="true"android:layout_alignParentEnd="true"android:layout_alignParentBottom="true"android:layout_marginStart="3dp"android:layout_marginEnd="164dp"android:layout_marginBottom="440dp"android:text="已关联微信账号,请输入密码" /><EditTextandroid:id="@+id/editTextTextPassword"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:layout_centerHorizontal="true"android:layout_marginBottom="277dp"android:ems="10"android:gravity="center"android:hint="请输入微信密码"android:inputType="textPassword" /><TextViewandroid:id="@+id/wechat_id"android:layout_width="176dp"android:layout_height="97dp"android:layout_alignParentTop="true"android:layout_alignParentEnd="true"android:layout_alignParentBottom="true"android:layout_marginTop="23dp"android:layout_marginEnd="198dp"android:layout_marginBottom="611dp"android:ems="10"android:gravity="center"android:text="真理"android:textColor="#141313"android:textSize="30sp"android:textStyle="bold" /><TextViewandroid:id="@+id/qq_forgetpwd"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentStart="true"android:layout_alignParentBottom="true"android:layout_marginStart="32dp"android:layout_marginBottom="213dp"android:text="忘记密码"android:textColor="#141313" /><Viewandroid:layout_width="3dp"android:layout_height="12dp"android:layout_alignParentEnd="true"android:layout_alignParentBottom="true"android:layout_centerHorizontal="true"android:layout_marginLeft="50dp"android:layout_marginEnd="178dp"android:layout_marginBottom="217dp"android:background="#141313" /><TextViewandroid:id="@+id/qq_register"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentEnd="true"android:layout_alignParentBottom="true"android:layout_marginLeft="50dp"android:layout_marginEnd="42dp"android:layout_marginBottom="212dp"android:text="用户注册"android:textColor="#141313" /><ImageViewandroid:id="@+id/qq_login"android:layout_width="102dp"android:layout_height="35dp"android:layout_alignParentEnd="true"android:layout_alignParentBottom="true"android:layout_centerHorizontal="true"android:layout_marginTop="80dp"android:layout_marginEnd="127dp"android:layout_marginBottom="122dp"android:src="@drawable/go_right" /></RelativeLayout>
Design:
②.对应activity文件
package com.example.test_intent;import android.os.Bundle;import androidx.appcompat.app.AppCompatActivity;public class intent1Activity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.wechat_login_test);}
}
③.intent方法实现
package com.example.test_intent;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;import androidx.annotation.Nullable;public class SecondActivity extends Activity {//关联界面//重写方法@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.layout_second_activity);//button1:通过显式Intent设置目标Activity所在的包名和类的全路径,实现第二种页面跳转。Button button10 = (Button) findViewById(R.id.button1);button10.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent1 = new Intent();intent1.setClassName("com.example.test_intent","com.example.test_intent.intent1Activity");//目标参数的包名与类名startActivity(intent1);}});
}
④.注册文件
<activity android:name=".intent1Activity"></activity>
2.隐式intent方法
通过隐式Intent设置setAction(),实现第三种页面跳转
eg:点击手机登录,实现页面跳转
①.布局文件
<?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"xmlns:tools="http://schemas.android.com/tools"android:name="action2"><EditTextandroid:id="@+id/editTextPhone"android:layout_width="237dp"android:layout_height="wrap_content"android:layout_alignParentStart="true"android:layout_alignParentTop="true"android:layout_alignParentBottom="true"android:layout_centerHorizontal="true"android:layout_marginStart="99dp"android:layout_marginTop="288dp"android:layout_marginBottom="398dp"android:ems="10"android:hint="请输入您的手机号"android:gravity="center"android:inputType="phone"android:visibility="visible"/><EditTextandroid:id="@+id/editTextNumber"android:layout_width="131dp"android:layout_height="wrap_content"android:layout_alignParentEnd="true"android:layout_alignParentBottom="true"android:layout_centerHorizontal="true"android:layout_marginEnd="184dp"android:layout_marginBottom="318dp"android:ems="10"android:inputType="number" /><Buttonandroid:id="@+id/button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentEnd="true"android:layout_alignParentBottom="true"android:layout_marginEnd="71dp"android:layout_marginBottom="319dp"android:text="验证码" /><ImageViewandroid:id="@+id/qq_login"android:layout_width="102dp"android:layout_height="35dp"android:layout_alignParentEnd="true"android:layout_alignParentBottom="true"android:layout_marginTop="80dp"android:layout_marginEnd="143dp"android:layout_marginBottom="241dp"android:src="@drawable/go_right" /><TextViewandroid:id="@+id/qq_forgetpwd"android:layout_width="62dp"android:layout_height="wrap_content"android:layout_alignParentEnd="true"android:layout_alignParentBottom="true"android:layout_marginEnd="253dp"android:layout_marginBottom="181dp"android:text="返回"android:textColor="#141313" /><Viewandroid:layout_width="1dp"android:layout_height="21dp"android:layout_alignParentEnd="true"android:layout_alignParentBottom="true"android:layout_marginLeft="50dp"android:layout_marginEnd="192dp"android:layout_marginBottom="177dp"android:background="#141313" /><TextViewandroid:id="@+id/qq_register"android:layout_width="59dp"android:layout_height="wrap_content"android:layout_alignParentEnd="true"android:layout_alignParentBottom="true"android:layout_marginLeft="50dp"android:layout_marginEnd="72dp"android:layout_marginBottom="180dp"android:text="帮助"android:textColor="#141313" />
</RelativeLayout>
Design:
②.activity文件
package com.example.test_intent;import android.os.Bundle;import androidx.appcompat.app.AppCompatActivity;public class intent2Activity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}
}
③.隐式intent实现方法
在这里插入package com.example.test_intent;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;import androidx.annotation.Nullable;public class SecondActivity extends Activity {//关联界面//重写方法@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.layout_second_activity);//button2:通过隐式Intent设置setAction(),实现第三种页面跳转。Button button20 = (Button) findViewById(R.id.button2);button20.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent2 = new Intent();intent2.setAction("Action0");startActivity(intent2);}});
}
④.注册信息
<activity android:name=".intent2Activity"><intent-filter><action android:name="Action0" /><category android:name="android.intent.category.DEFAULT" /></intent-filter></activity>
三、总体结构
四、实现效果:
五、问题与总结
1.布局Design与最后实现效果不一致,运行app时,设计的页面没有完整显示
目前认为可能是布局tag有关,解决以后再及时更新
2.一开始运行app时,程序不报错,且能正常打开,但点击按钮时会提示“该应用已强制停止”,然后退出
这是因为页面内的代码不完整,对应activity没有在AndroidManifest.xml文件里注册,所以造成app文件不完整,想要运行正常就需要查看并保证对应每一个activity文件都有注册信息
实验四:app内页面跳转相关推荐
- android 外部内容分享到app内,外部跳转APP
需求 广告推广.华为微服务:通过外部网页或者卡片跳转到我们的app指定界面.如果app已经存在打开app,app不存在跳转下载界面. APP配置 android:name=".Launche ...
- android界面实现框架内页面跳转_KVM虚拟化管理平台的实现
KVM虚拟化管理平台的实现 源码链接:https://github.com/wsjhk/IaaS_admin.git 视频演示链接:https://v.youku.com/v_show/id_XMjg ...
- 微信中下载APP,页面跳转提示信息的实现
相信做前端的朋友一定都遇到这种情况的,当你的网页中有直接链接apk下载的时候会没有反映的,是因为在微信内是无法下载软件.手机APP等,那么这个时候一般的解决方案就是:必须要点击右上角三个点,选择&qu ...
- MUI框架开发HTML5手机APP(二)--页面跳转传值底部选项卡切换
原文链接: 一.MUI加载子页面 1加载子页面详解 在mobile app开发过程中,经常遇到卡头卡尾的页面,也就是说头部和尾部保持不动,而只有中间区域可以滚动,常见的就是新闻列表与详情页等情况: ...
- 微信小程序插件内页面跳转和参数传递
在此以插件开发中文章列表跳传文章详情为例. 1.首先在插件中的文章列表页面wxml中绑定跳转事件. bindtap='url' data-id="{{item.article_id}}&qu ...
- android h5页面跳转,android H5 应用内跳转Scheme协议
什么是URL Scheme 概述: android中的scheme是一种页面内跳转协议,是一种非常好的实现机制,通过定义自己的scheme协议,可以非常方便跳转app中的各个页面:通过scheme协议 ...
- 网页跳转(APP内/浏览器)
APP内网页跳转: xml <WebViewandroid:layout_below="@id/lunbo"android:layout_width="match_ ...
- 栈外h5跳转app,否则跳商城下载
端外在打开h5时,一些情况下需要唤起app.若安装app,则唤起,否则跳转手机商城下载页. 1 获取端外统跳地址 需要找端内开发人员提供,格式大致如下: /*** protocol为统跳协议(每一个a ...
- H5 引用vue 打开app(如何该手机内有某个app则直接打开app,如果没有则跳转app下载页面)
H5 引用vue 打开app(如何该手机内有某个app则直接打开app,如果没有则跳转app下载页面) **ps: 一定一定一定一定先向 ios要 ( ios下载地址 和 ios对应的app协议 ), ...
最新文章
- 神经网络无法区分异同,而且这个缺陷是本质性的
- Linux组管理和权限管理
- 爱奇艺个性化推荐排序实践【转】
- 【bzoj1911】 Apio2010—特别行动队
- 请问:如何写出没有BUG的代码?
- CASREL:A Novel Cascade Binary Tagging Framework for Relational Triple Extraction(关系抽取,ACL2020,重叠关系)
- idea 分支管理插件_Git的分支管理常用命令
- java spring mvc api_SpringMVC实现REST API
- 游戏建模用什么软件,学游戏建模哪里好?
- 做游戏,学编程(C语言) 8 英雄联盟连连看
- java调用arcgis soe发布的rest服务,中文传值乱码问题
- SVN提示is already locked 解决办法
- 如何在 Mac 上设置自定义锁屏信息?
- Javascript:访问和设置CSS属性
- 税控接口 - 模拟录入
- 第二篇:傅里叶变换与短时傅里叶变换
- mysql实验体会怎么写_数据库实验心得
- 「解决方案」运维、能耗、网关整体解决方案
- 移动硬盘文件丢失如何找回?
- python 英文关键词提取_python TF-IDF算法实现文本关键词提取