第五章 模拟跳转充值界面以及requestCode和resultCode的解释 2.8

第五章 模拟跳转充值界面以及requestCode和resultCode的解释 2.81.requestCode和resultCoderequestCode:由跳转前的界面定义,通过startActivityForResult()来将定义的intent(同时也代表着要跳转的界面)与

大家好,又见面了,我是你们的朋友全栈君。

1. requestCode和resultCode

  requestCode:由跳转前的界面定义,通过startActivityForResult()来将定义的intent(同时也代表着要跳转的界面)与requestCode绑定。接着复写onActivityResult(int requestCode, int resultCode, Intent data)来获取发生事件的界面。

  resultCode: 由跳转后的界面定义,通过setResult()来将跳转后界面的intent与resultCode绑定。此时跳转前的界面可通过resultCode来选择跳转后界面的intent(一般在判断某个具体的界面后使用)。

  本次例子中,假设点击充值按钮后的充值界面的requestCode == PAY_REQUEST_CODE == 1。接着设置点击充值成功后的resultCode == 2,取消充值为resultCode == 3。

 

2. MainActivity(跳转前界面)

package com.example.infotransmission2;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

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

/**
 * 数据回传
 * 点击充值按钮,跳转到第二个界面进行充值
 * 第二个界面进行充值,充值完成以后告诉第一个界面结果,包括充值成功或者失败
 *
 */
public class MainActivity extends AppCompatActivity {

    private Button mBtnRecharge;
    private TextView mTextPayResult;
    private static int PAY_REQUEST_CODE = 1;

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

        // Refactor-Extract Method
        initView();

        initListener();
    }

    private void initListener() {
        mBtnRecharge.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 设置一个点击事件,跳转到第二个界面进行充值
                Intent intent = new Intent(MainActivity.this, PayActivity.class);
                // 第一步,使用startActivityForResult代替原来的startActivity,表明跳转到别的页面后(该界面与requestCode绑定),
                // 等待该界面的相关返回码
                startActivityForResult(intent,1);
            }
        });
    }

    /**
     * 第二步,复写方法,返回的结果就会在这里回调
     * @param requestCode
     * @param resultCode
     * @param data
     */
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        // 通过requestCode来判断返回的Activity是哪一个
        if (requestCode == PAY_REQUEST_CODE) {
            String resultContent = null;
            if (resultCode == 2) {
                // 充值成功
                resultContent = data.getStringExtra("resultContent");
            }
            else if(resultCode == 3){
                // 充值失败
                resultContent = data.getStringExtra("resultContent");
            }
            mTextPayResult.setText(resultContent);
        }
    }

    /**
     * 初始化控件
     */
    private void initView() {
        mBtnRecharge = (Button) this.findViewById(R.id.btn_recharge);
        mTextPayResult = (TextView) this.findViewById(R.id.pay_result);
    }
}

 

3. PayActivity(跳转后的界面)

 1 package com.example.infotransmission2;
 2 
 3 import androidx.appcompat.app.AppCompatActivity;
 4 
 5 import android.content.Intent;
 6 import android.os.Bundle;
 7 import android.text.TextUtils;
 8 import android.view.View;
 9 import android.widget.Button;
10 import android.widget.EditText;
11 import android.widget.Toast;
12 
13 public class PayActivity extends AppCompatActivity {
14 
15     private EditText mEditInput;
16     private Button mBtnChargein;
17     private Button mBtnCancelCharge;
18 
19     @Override
20     protected void onCreate(Bundle savedInstanceState) {
21         super.onCreate(savedInstanceState);
22         setContentView(R.layout.activity_pay);
23 
24         initView();
25 
26         initListener();
27     }
28 
29     private void initListener() {
30         mBtnCancelCharge.setOnClickListener(new View.OnClickListener() {
31             @Override
32             public void onClick(View v) {
33                 handlerCancel();
34             }
35         });
36 
37         mBtnChargein.setOnClickListener(new View.OnClickListener() {
38             @Override
39             public void onClick(View v) {
40                 handlerPay();
41             }
42         });
43     }
44 
45     private void handlerCancel() {
46         Intent intent = new Intent();
47         intent.putExtra("resultContent", "充值失败!");
48         // 将该intent与设定的resultCode值相绑定
49         setResult(3, intent);
50         finish();
51     }
52 
53     private void handlerPay() {
54         String payNumber = mEditInput.getText().toString().trim();
55         if (TextUtils.isEmpty(payNumber)) {
56             Toast.makeText(this, "请输入充值金额", Toast.LENGTH_SHORT).show();
57             return;
58         }
59 
60         // 进行充值(模拟,需要网络编程)
61         // 将该intent与设定的resultCode值相绑定
62         Intent intent = new Intent();
63         intent.putExtra("resultContent", "充值成功!");
64         setResult(2, intent);
65         finish();
66     }
67 
68     private void initView() {
69         mEditInput = (EditText) this.findViewById(R.id.edit_input);
70         mBtnChargein = (Button) this.findViewById(R.id.btn_chargein);
71         mBtnCancelCharge = (Button) this.findViewById(R.id.btn_cancelCharge);
72     }
73 
74 }

 

4. activity_main

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:orientation="vertical">

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="点击充值"
        android:id="@+id/btn_recharge"/>

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/pay_result"/>

</LinearLayout>

<span role="heading" aria-level="2">第五章 模拟跳转充值界面以及requestCode和resultCode的解释 2.8

 

 

5. activity_pay

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout
 3     xmlns:android="http://schemas.android.com/apk/res/android"
 4     xmlns:app="http://schemas.android.com/apk/res-auto"
 5     xmlns:tools="http://schemas.android.com/tools"
 6     android:layout_width="match_parent"
 7     android:layout_height="match_parent"
 8     tools:context=".PayActivity"
 9     android:orientation="vertical">
10 
11     <EditText
12         android:layout_width="match_parent"
13         android:layout_height="wrap_content"
14         android:hint="请输入充值金额"
15         android:id="@+id/edit_input"
16         android:inputType="number"
17         android:textSize="30sp"/>
18 
19     <Button
20         android:layout_width="match_parent"
21         android:layout_height="wrap_content"
22         android:id="@+id/btn_chargein"
23         android:text="确定充值"/>
24 
25     <Button
26         android:layout_width="match_parent"
27         android:layout_height="wrap_content"
28         android:text="取消充值"
29         android:id="@+id/btn_cancelCharge"/>
30 
31 </LinearLayout>

 <span role="heading" aria-level="2">第五章 模拟跳转充值界面以及requestCode和resultCode的解释 2.8

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/155759.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • UART串口通信软件推荐

    UART串口通信软件推荐UART 串口通信软件推荐在我们调试单片机的时候 经常用到 UART 串口通信 没有足够的资金购入 LCD 屏 OLED 屏等显示器件 市面上这么多的串口调试软件实在是让人无从下手 下面安利 3 款串口调试软件 提供大家参考选择吧 numberone VOFA VOFA 原名伏特加 于 2018 年 10 月启动 代码配酒 bug 没有 Volt 伏特 Ohm 欧姆 Fala 法拉 Ampere 安培 是电气领域的基础单位 与他们的发明者 4 位电子物理学领域的科学巨人 分别同名 他们的首字母共同构成了 VOFA

    2025年10月29日
    3
  • phpstorm2022.01永久激活码【2022免费激活】2022.01.29

    (phpstorm2022.01永久激活码)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月31日
    147
  • 关系数据理论-数据库习题

    关系数据理论-数据库习题设有关系W(工号,姓名,工种,定额),将其规范化到第三范式正确的答案是()。A.W1(工号,姓名),W2(工种,定额)B.W1(工号,工种,定额),W2(工号,姓名)C.W1(工号,姓名,工种),w2(工种,定额)D.以上都不对正确答案:C3NF要求没有部分依赖和传递依赖,“定额”直接依赖“工种”,传递依赖“工号”。规范化的实质是概念的单一化,“一事一地”,一个关系只描述一个概念。规范化理论是关系数据库进行逻辑设计的理论依据。根据这个理论,关系数据库中的关系必须满

    2022年10月16日
    4
  • Java工程师书单(初级、中级、高级)

    Java工程师书单(初级、中级、高级)简介怎样学习才能从一名Java初级程序员成长为一名合格的架构师,或者说一名合格的架构师应该有怎样的技术知识体系,这是不仅一个刚刚踏入职场的初级程序员也是工作一两年之后开始迷茫的程序员经常会问到的问题笔者完全从自身的自学经历出发,以初学者的视角挑选出如下的这些图书。初级书单《编写高质量代码——改善Java程序的151个建议》这是一本值得入门java的人

    2022年7月8日
    22
  • DIY个人服务器(diy存储服务器)

    小型企业及个人用户入门级服务器DIY2007-01-16eNet&Ciweek2、主板:服务器主板相比普通PC的主板有很大的不同,这些在前面的介绍中已经说明过了。作为DIY服务器的主板,选购的出发点应是“实际”。主板买回来是用的,如果我们事前分析情况发现只用一个CPU就行了,也不需要用到SCSI设备,这样我们就没有必要非要买具有多余功能的服务器主板了,毕竟这些多余的功能是要“银子”来换来的…

    2022年4月10日
    143
  • java 数字信封_【Java密码学】使用Bouncy Castle生成数字签名、数字信封

    java 数字信封_【Java密码学】使用Bouncy Castle生成数字签名、数字信封importjava.io.FileInputStream;importjava.io.InputStream;importjava.security.KeyStore;importjava.security.PrivateKey;importjava.security.Provider;importjava.security.Security;importjava.security.cert.C…

    2025年5月26日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号