当前位置: 首页 > news >正文

android笔记5——同一个Activity中Fragment的切换

今天来模拟一个注冊的界面过程:


点击“下一步”之后:



说明一下:界面总局仅仅在一个Activity里面。

1、首先定义RegistActivity

public class RegistActivity extends Activity {

	private EditText userEditText;
	private EditText verifyCodeText;

	private Fragment verifyCodeFragment;
	private Fragment checkCodeFragment;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_regist);

		if (savedInstanceState == null) {
			verifyCodeFragment = new VerifyCodeFragment();
			getFragmentManager().beginTransaction()
					.add(R.id.activity_regist, verifyCodeFragment).commit();
		}
	}
}


activity_regist.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_regist"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.javen.activity.RegistActivity" >
    
</LinearLayout>

这边通过java代码来增加Fragment。

2、fragment_verifycode.xml  获取验证码的界面


<?xml version="1.0" encoding="utf-8"?

> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" tools:context="com.javen.activity.fragment.VerifyCodeFragment" > <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/message" android:textSize="@dimen/label_font_size" /> <EditText android:id="@+id/userEditText" android:layout_width="200dp" android:layout_height="wrap_content" android:inputType="text" /> </LinearLayout> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" > <CheckBox android:layout_width="wrap_content" android:layout_height="wrap_content" android:checked="true" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/app_name" android:textSize="@dimen/label_font_size" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_horizontal" > <Button android:id="@+id/bnRegist" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:onClick="verifyCodeListener" android:text="@string/next" /> </LinearLayout> </LinearLayout>


2、输入验证码的界面:fragment_checkcode.xml


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    tools:context="com.javen.activity.fragment.CheckCodeFragment" >

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/verifyCode"
            android:textSize="@dimen/label_font_size" />

        <EditText
            android:id="@+id/verifyCodeText"
            android:layout_width="200dp"
            android:layout_height="wrap_content"
            android:inputType="text" />
    </LinearLayout>



    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal" >

        <Button
            android:id="@+id/bnRegist"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:onClick="checkCodeListener"
            android:text="@string/next" />
    </LinearLayout>

</LinearLayout>

3、设置buttonListener,此处须要在Activity里面加入方法。

verifyCodeListener:

public void verifyCodeListener(View source) {

		userEditText = (EditText) verifyCodeFragment.getView().findViewById(
				R.id.userEditText);

		String phoneNumber = userEditText.getText().toString().trim();
		if (!Tools.matchPhone(phoneNumber)) {<span style="white-space:pre">	</span>//对手机号码验证的一个正則表達式方法
			DialogUtil.showDialog(this, Constant.LOGIN_USER_NAME, false);
			return;
		}
		this.getVerifyCode(phoneNumber);<span style="white-space:pre">	</span>//Http请求获取验证码
		// 释放当前的fragment。又一次设置短信验证码输入的fragment
		FragmentTransaction transaction = getFragmentManager()
				.beginTransaction();
		transaction.remove(verifyCodeFragment);
		checkCodeFragment = new CheckCodeFragment();
		transaction.add(R.id.activity_regist, checkCodeFragment).commit();
	}
主要切换代码为:

<span style="white-space:pre">	</span>// 释放当前的fragment。又一次设置短信验证码输入的fragment
	FragmentTransaction transaction = getFragmentManager()
			.beginTransaction();
	transaction.remove(verifyCodeFragment);
	checkCodeFragment = new CheckCodeFragment();
	transaction.add(R.id.activity_regist, checkCodeFragment).commit();

checkCodeListener:

public void checkCodeListener(View source) {
		verifyCodeText = (EditText) checkCodeFragment.getView().findViewById(
				R.id.verifyCodeText);
		String verifyCode = verifyCodeText.getText().toString().trim();

		Map<String, String> params = new HashMap<String, String>();
		params.put("verifyCode", verifyCode);

		String url = UrlsUtil.formatUrl(UrlConstant.REGIST_CHECKCODE);

		String result = null;
		try {
			result = HttpsUtil.postRequest(url, params);
		} catch (Exception e) {
			e.printStackTrace();
			DialogUtil.showDialog(this, Constant.SERVICE_ERRO, false);
		}
		
		if(result != null){
			//TODO
		}
	}

说明一下:

这边主要说明的是Fragment切换的过程,至于Http请求,Util方法什么的,仅仅要了解这个功能就可以,代码事实上和普通工具类似的。

转载于:https://www.cnblogs.com/claireyuancy/p/6815691.html

相关文章:

  • 使用vmimeNET解析账单邮件
  • 关于浏览器端的网页性能测试
  • Qt入门之基础篇 ( 一 ) :Qt4及Qt5的下载与安装
  • 倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-如何使用断点
  • SQLServer2005数据库日志文件损坏的情况下如何恢复数据库
  • centos7下yum快速安装 mariadb(mysql)
  • 精讲sql server数据库sysObjects表中xtype字段值的含义
  • 第一个冲刺周期第六天
  • 日志分析 操作
  • Maven中的-D(Properties属性)和-P(Profiles配置文件)
  • 用sql语句dbcc log 查看SQL Server 数据库的事务日志
  • 多线程学习(十二)
  • 用c#读取并分析sql2005日志
  • SQL2005数据行的二进制结构
  • tyvj1305 最大子序和
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • 分享的文章《人生如棋》
  • 230. Kth Smallest Element in a BST
  • Median of Two Sorted Arrays
  • MySQL用户中的%到底包不包括localhost?
  • PaddlePaddle-GitHub的正确打开姿势
  • php面试题 汇集2
  • React 快速上手 - 07 前端路由 react-router
  • ReactNativeweexDeviceOne对比
  • Web设计流程优化:网页效果图设计新思路
  • 不上全站https的网站你们就等着被恶心死吧
  • 聊聊sentinel的DegradeSlot
  • 排序算法之--选择排序
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 算法-图和图算法
  • 学习HTTP相关知识笔记
  • 在Docker Swarm上部署Apache Storm:第1部分
  • (C++)八皇后问题
  • (day6) 319. 灯泡开关
  • (Git) gitignore基础使用
  • (Ruby)Ubuntu12.04安装Rails环境
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (七)Java对象在Hibernate持久化层的状态
  • (已解决)什么是vue导航守卫
  • .equals()到底是什么意思?
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .NET Core使用NPOI导出复杂,美观的Excel详解
  • .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法
  • .NET NPOI导出Excel详解
  • .NET 设计模式—简单工厂(Simple Factory Pattern)
  • .NET 中各种混淆(Obfuscation)的含义、原理、实际效果和不同级别的差异(使用 SmartAssembly)
  • .NET 中使用 TaskCompletionSource 作为线程同步互斥或异步操作的事件
  • .NETCORE 开发登录接口MFA谷歌多因子身份验证
  • .skip() 和 .only() 的使用
  • /bin、/sbin、/usr/bin、/usr/sbin
  • @Bean有哪些属性
  • [.NET]桃源网络硬盘 v7.4
  • [《百万宝贝》观后]To be or not to be?
  • [④ADRV902x]: Digital Filter Configuration(发射端)
  • [BJDCTF 2020]easy_md5