前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第五章 模拟跳转充值界面以及requestCode和resultCode的解释 2.8

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

作者头像
全栈程序员站长
发布2022-09-07 15:03:13
3160
发布2022-09-07 15:03:13
举报
文章被收录于专栏:全栈程序员必看

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

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(跳转前界面)

代码语言:javascript
复制
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(跳转后的界面)

代码语言:javascript
复制
 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

代码语言:javascript
复制
<?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
<span role="heading" aria-level="2">第五章 模拟跳转充值界面以及requestCode和resultCode的解释 2.8

5. activity_pay

代码语言:javascript
复制
 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
<span role="heading" aria-level="2">第五章 模拟跳转充值界面以及requestCode和resultCode的解释 2.8

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档