基于startActivityForResult方法處理兩個Activity之間數(shù)據(jù)傳遞問題
廢話不多說了,直接給大家貼代碼了。
package com.example.testactivityresquest;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn = (Button) findViewById(R.id.button);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, Activityb.class);
int[] nums = { , };
intent.putExtra(Changliang.KEY, nums);
//有別于startActivity,如果啟動的其他Activity多了以后。相當于定一個特定KEY值,返回根據(jù)KEY值返回。
startActivityForResult(intent, Changliang.requestCode);
}
});
}
//Activityb傳回來的數(shù)據(jù)在這個方法中獲取
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
int s = data.getIntExtra(Changliang.Activity_b_KEY, );
Toast.makeText(getApplicationContext(), "傳遞兩個數(shù)得到的和是:" + s, ).show();
}
}
package com.example.testactivityresquest;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class Activityb extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activityb);
Intent intent = this.getIntent();
int[] n = intent.getIntArrayExtra(Changliang.KEY);
final int nums = n[] + n[];
Toast.makeText(this, n[] + " " + n[], ).show();
Button btn = (Button) findViewById(R.id.button);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Activityb.this, MainActivity.class);
intent.putExtra(Changliang.Activity_b_KEY, nums);
// 將數(shù)據(jù)根據(jù)特定鍵值的意圖事件導(dǎo)入
Activityb.this.setResult(Changliang.requestCode, intent);
//關(guān)閉后返回主Activity
Activityb.this.finish();
}
});
}
}
package com.example.testactivityresquest;
public class Changliang {
public static final String KEY="key";
public static final String Activity_b_KEY="key1";
public static final int requestCode=1987;
}
xml文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ff" >
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="dp"
android:text="啟動Activityb" />
</RelativeLayout>
<?xml version="." encoding="utf-"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ff"
android:orientation="vertical" >
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="返回Activity" />
</LinearLayout>
別忘在AndroidManifast中注冊activityb。
運行效果圖:

startActivityForResult與startActivity的不同之處在于:
1、startActivity( )
僅僅是跳轉(zhuǎn)到目標頁面,若是想跳回當前頁面,則必須再使用一次startActivity( )。
2、startActivityForResult( )
可以一次性完成這項任務(wù),當程序執(zhí)行到這段代碼的時候,假若從T1Activity跳轉(zhuǎn)到下一個Text2Activity,而當這個Text2Activity調(diào)用了finish()方法以后,程序會自動跳轉(zhuǎn)回T1Activity,并調(diào)用前一個T1Activity中的onActivityResult( )方法。
相關(guān)文章
Android Studio中導(dǎo)入JNI生成的.so庫的實現(xiàn)方法
這篇文章主要介紹了Android Studio中導(dǎo)入JNI生成的.so庫的實現(xiàn)方法的相關(guān)資料,這里不僅提供實現(xiàn)方案并提供了實現(xiàn)的方法,需要的朋友可以參考下2017-07-07
Android中AlarmManager+Notification實現(xiàn)定時通知提醒功能
本篇文章主要介紹了Android中AlarmManager+Notification實現(xiàn)定時通知提醒功能,非常具有實用價值,需要的朋友可以參考下2017-10-10
Android通過自定義Activity實現(xiàn)懸浮的Dialog詳解
這篇文章主要給大家介紹了關(guān)于Android通過自定義Activity實現(xiàn)懸浮的Dialog的相關(guān)資料,文中給出了詳細的示例代碼供大家參考學習,對大家具有一定的參考學習價值,感興趣的朋友們下面來一起看看吧。2017-05-05
Android利用SurfaceView實現(xiàn)簡單計時器
這篇文章主要為大家詳細介紹了Android利用SurfaceView實現(xiàn)一個簡單計時器,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-01-01
Android UI設(shè)計與開發(fā)之使用ViewPager實現(xiàn)歡迎引導(dǎo)頁面
這篇文章主要為大家詳細介紹了Android UI設(shè)計與開發(fā)之使用ViewPager實現(xiàn)歡迎引導(dǎo)頁面,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-08-08
詳解Android?Flutter如何使用相機實現(xiàn)拍攝照片
在app中使用相機肯定是再平常不過的一項事情了,相機肯定涉及到了底層原生代碼的調(diào)用,那么在flutter中如何快速簡單的使用上相機的功能呢?一起來看看吧2023-04-04
Android 實現(xiàn)抖音小游戲潛艇大挑戰(zhàn)的思路詳解
《潛水艇大挑戰(zhàn)》是抖音上的一款小游戲,最近特別火爆,很多小伙伴都玩過。接下來通過本文給大家分享Android 手擼抖音小游戲潛艇大挑戰(zhàn)的思路,需要的朋友可以參考下2020-04-04
Android Studio提示inotify大小不足的解決辦法
大家在使用Android Studio導(dǎo)入AOSP源碼的時候,可能會遇到inotify大小不足的問題,這篇文章就給大家介紹了怎么解決這個問題的方法,有需要的朋友們可以參考借鑒。2016-09-09

