Activity组件(四):通过requestCode和resultCode来实现Activity间的数据回传
生活随笔
收集整理的這篇文章主要介紹了
Activity组件(四):通过requestCode和resultCode来实现Activity间的数据回传
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、什么是數據回傳
開發時,通過一個Activity來調用另一個Activity,當用戶在第二個Activity中操作完成后,自動返回第一個Activity并將數據傳給第一個Activity,從而使得第一個Activity可以獲取第二個Activity的數據。
在第一個Activity界面中,通過startActivityForResult()來啟動第二個Activity界面,在第二個界面中將數據通過setResult()回傳,在第一個Activity中重寫onActivityResult()方法。
requestCode:代表了啟動Activity的請求碼,用于標識請求來源,進而判斷這個返回的數據的路徑,從哪里開始,經過哪里,又回到這里。
resultCode:通過結果碼在onActivityResult()方法進行判斷,用來區分結果
二、實現充值的數據回傳
點擊按鈕進入充值頁面
直接點擊確認充值,判斷數據為空
輸入充值金額
點擊確認充值
再次點擊按鈕進入充值界面
點擊取消充值
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.activityforresultdemo">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".PayActivity"/>
</application>
</manifest>
activity_main.xml
<?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:orientation="vertical"
android:layout_height="match_parent"
tools:context=".MainActivity">
<Button
android:id="@+id/recharge_btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="點擊進行充值" />
<TextView
android:id="@+id/pay_result"
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="match_parent"/>
</LinearLayout>
activity_pay.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:text="充值界面"
android:textSize="30sp"
android:layout_marginTop="40dp"
android:layout_gravity="center"
android:layout_height="wrap_content"/>
<EditText
android:id="@+id/pay_input_box"
android:layout_width="match_parent"
android:layout_marginTop="30dp"
android:hint="請輸入充值金額"
android:inputType="number"
android:maxLines="1"
android:layout_height="wrap_content"/>
<RelativeLayout
android:layout_width="match_parent"
android:layout_marginTop="20dp"
android:layout_height="match_parent">
<Button
android:id="@+id/start_pay_btn"
android:layout_width="wrap_content"
android:layout_marginLeft="40dp"
android:text="確認充值"
android:layout_height="wrap_content"/>
<Button
android:id="@+id/cancel_pay_btn"
android:layout_width="wrap_content"
android:layout_marginRight="40dp"
android:layout_alignParentRight="true"
android:text="取消充值"
android:layout_height="wrap_content"/>
</RelativeLayout>
</LinearLayout>
MainActivity.java
package com.example.activityforresultdemo;
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 mRechargeBtn;
private TextView mPayResult;
private static final int PAY_RESULT_CODE =1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
initListener();
}
private void initListener() {
mRechargeBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//設置點擊事件
Intent intent =new Intent(MainActivity.this,PayActivity.class);
//使用startActivityForResult來替代原來的startActivity
startActivityForResult(intent,PAY_RESULT_CODE);
}
});
}
/**
* 初始化控件
*/
private void initView() {
mRechargeBtn = (Button) this.findViewById(R.id.recharge_btn);
mPayResult =(TextView) this.findViewById(R.id.pay_result);
}
/**
* 返回的結果在這里回調
* @param requestCode
* @param resultCode
* @param data
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
String resultContent = null;
//當我們判斷這個請求碼的時候,就知道,這是充值界面返回的結果
if (requestCode==PAY_RESULT_CODE) {
if(resultCode==2){
//充值成功
resultContent=data.getStringExtra("resultContent");
}else if(resultCode==3){
//充值被取消
resultContent=data.getStringExtra("resultContent");
}
mPayResult.setText(resultContent);
}
}
}
PayActivity.java
package com.example.activityforresultdemo;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import androidx.annotation.Nullable;
public class PayActivity extends Activity {
private EditText mInoutBox;
private Button mStartPayBtn;
private Button mCancelPayBtn;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_pay);
initView();
initListener();
}
private void initListener() {
mStartPayBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
handlerPay();
}
});
mCancelPayBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
handlerCancel();
}
});
}
private void handlerCancel() {
Intent intent =new Intent();
intent.putExtra("resultContent","充值已被取消");
setResult( 3,intent);
finish();
}
private void handlerPay() {
String paynumber=mInoutBox.getText().toString().trim();
if (TextUtils.isEmpty(paynumber)) {
Toast.makeText(PayActivity.this,"未輸入充值金額",Toast.LENGTH_SHORT).show();
return;
}
//充值成功
//setResult()有兩個重載方法,一個只有resultCode,另一個還有intent
Intent intent =new Intent();
intent.putExtra("resultContent","成功充值"+paynumber+"元");
setResult(2,intent);
finish();
}
private void initView() {
mInoutBox=(EditText) this.findViewById(R.id.pay_input_box);
mStartPayBtn=(Button) this.findViewById(R.id.start_pay_btn);
mCancelPayBtn=(Button) this.findViewById(R.id.cancel_pay_btn);
}
}
總結
以上是生活随笔為你收集整理的Activity组件(四):通过requestCode和resultCode来实现Activity间的数据回传的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2016重庆计算机一级考试题型,重庆计算
- 下一篇: 计算机配置 凭据分配,win7怎样添加凭