android intent參數是上次的結果,【Android】7.0 Intent向下一個活動傳遞數據、返回數據給上一個活動...

1.0 可以利用Intent吧數據傳遞給上一個活動,新建一個叫“hellotest01”的項目。

新建活動FirstActivity,勾選“Generate Layout File”和“Launcher Activity”。

AAffA0nNPuCLAAAAAElFTkSuQmCC

image

修改AndroidMainifest.xml中的內容:

android:name=".FirstActivity"

android:label="第一個活動">

在布局文件activity_first.xml增減一個按鈕:<?xml ?version="1.0"?encoding="utf-8"?>

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=".FirstActivity">

android:id="@+id/button_1"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="按鈕1"

/>

顯示Intent調用,FirstActivity .java:package?com.example.hellotest01;import?android.content.Intent;import?android.support.v7.app.AppCompatActivity;import?android.os.Bundle;import?android.view.View;import?android.widget.Button;public?class?FirstActivity?extends?AppCompatActivity?{????@Override

protected?void?onCreate(Bundle?savedInstanceState)?{????????super.onCreate(savedInstanceState);

setContentView(R.layout.activity_first);

Button?button1?=?(Button)?findViewById(R.id.button_1);

button1.setOnClickListener(new?View.OnClickListener()?{????????????@Override

public?void?onClick(View?v)?{

String?data?=?"你好,活動二";

Intent?intent?=?new?Intent(FirstActivity.this,SencondActivity.class);//????????????????intent提供一系列的putExtra()方法重載//????????????????第一個參數是鍵,方便目標活動接收時取值,第二個參數才是真正傳遞的數據。

intent.putExtra("extra_data",data);

startActivity(intent);

}

});

}

}

新建活動SencondActivity,勾選“Generate Layout File”。

SencondActivity.java(負責接收,并用debug.d 打印):package?com.example.hellotest01;import?android.content.Intent;import?android.support.v7.app.AppCompatActivity;import?android.os.Bundle;import?android.util.Log;public?class?SencondActivity?extends?AppCompatActivity?{????@Override

protected?void?onCreate(Bundle?savedInstanceState)?{????????super.onCreate(savedInstanceState);

setContentView(R.layout.activity_sencond);

Intent?intent?=?getIntent();

String?data?=?intent.getStringExtra("extra_data");

Log.d("**********活動二**********",data);

}

}

運行:

AAffA0nNPuCLAAAAAElFTkSuQmCC

image

AAffA0nNPuCLAAAAAElFTkSuQmCC

image

AAffA0nNPuCLAAAAAElFTkSuQmCC

image

2.0 返回數據剛給上一個活動

新建活動ThirdActivity,勾選“Generate Layout File”。

由于之前忘了給新建的活動SecondActivity和ThirdActivity弄個名字,這里修改AndroidMainifest.xml中的內容補上:

android:label="第三個活動">

android:label="第二個活動"/>

給活動FhirdActivity布局增加一個Button,activity_third.xml:<?xml ?version="1.0"?encoding="utf-8"?>

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=".ThirdActivity">

android:id="@+id/button_3"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="按鈕3"?/>

SecondActivity.java(說明解釋都在源代碼里面):package?com.example.hellotest01;import?android.content.Intent;import?android.support.annotation.Nullable;import?android.support.v7.app.AppCompatActivity;import?android.os.Bundle;import?android.util.Log;import?android.view.View;import?android.widget.Button;public?class?SencondActivity?extends?AppCompatActivity?{????@Override

protected?void?onCreate(Bundle?savedInstanceState)?{????????super.onCreate(savedInstanceState);

setContentView(R.layout.activity_sencond);

Intent?intent?=?getIntent();

String?data?=?intent.getStringExtra("extra_data");

Log.d("**********活動二**********",?data);

Button?button2?=?(Button)?findViewById(R.id.button_2);

button2.setOnClickListener(new?View.OnClickListener()?{????????????@Override

public?void?onClick(View?v)?{

String?data?=?"你好,活動三";

Intent?intent?=?new?Intent(SencondActivity.this,?ThirdActivity.class);//????????????????用startActivityForResult啟動活動ThirdActivity,請求碼只需要一個唯一值即可,這里傳入1

startActivityForResult(intent,?1);

}

});

}????//????在活動ThirdActivity被銷毀之后會回調上一個活動的onActivityResult()方法,//????因此我們需要在活動SencondActivity中重寫這個方法來得到返回的數據

@Override

protected?void?onActivityResult(int?requestCode,?int?resultCode,?@Nullable?Intent?data)?{????????//onActivityResult()?方法帶有三個參數//????????requestCode??在啟動活動中傳入的請求碼//????????resultCode???在返回數據時傳入的處理結果//????????data?????????攜帶著返回數據的Intent//????????由于在一個活動中有可能調用onActivityResult()方法去啟動很多不同的活動//????????每一個活動返回的數據都會調用onActivityResult()方法,//????????因此我們需要做的是檢查requestCode的值來判斷數據來源,確定數據是從ThirdActivity返回之后,//????????再通過resultCode的值來判斷處理結果是否成功//????????最后從data中取值并進行數據操作。

switch?(requestCode)?{????????????case?1:????????????????if?(resultCode?==?RESULT_OK)?{

String?returnedData?=?data.getStringExtra("data_return");

Log.d("**********返回數據為**********",?returnedData);

}????????????????break;????????????default:

}

}

}

ThirdActivity.java(說明解釋都在源代碼里面):package?com.example.hellotest01;import?android.content.Intent;import?android.support.v7.app.AppCompatActivity;import?android.os.Bundle;import?android.view.View;import?android.widget.Button;public?class?ThirdActivity?extends?AppCompatActivity?{????@Override

protected?void?onCreate(Bundle?savedInstanceState)?{????????super.onCreate(savedInstanceState);

setContentView(R.layout.activity_third);

Button?button3?=?(Button)?findViewById(R.id.button_3);

button3.setOnClickListener(new?View.OnClickListener()?{????????????@Override

public?void?onClick(View?v)?{//????????????????新建一個啟動器,不過只用來傳遞數據而已,沒有任何意圖

Intent?intent?=?new?Intent();

intent.putExtra("data_return",?"你好,活動二");//????????????????setResult()方法專門用于返回上一個為活動數據的//????????????????第一個參數用于向上一個活動返回處理結果,一般只使用RESULT_OK和RESULT_CANCELED這兩個值//????????????????第二個參數則把帶有數據的Intent傳遞回去,然后調用finish()方法銷毀當前活動

setResult(RESULT_OK,?intent);

finish();

}

});

}

}

完畢,運行,因為就創建活動FirstActivity為主活動,所以需要一個個點過去,按鈕一 按鈕二 按鈕三:

AAffA0nNPuCLAAAAAElFTkSuQmCC

image

AAffA0nNPuCLAAAAAElFTkSuQmCC

image

AAffA0nNPuCLAAAAAElFTkSuQmCC

image

AAffA0nNPuCLAAAAAElFTkSuQmCC

image

AAffA0nNPuCLAAAAAElFTkSuQmCC

image

3.0 當然,這樣有個缺點,如果用戶不是通過點擊按鈕,而是通過Back鍵(手機上的后撤/返回鍵)會到的活動SecondActivity,這樣數據無法返回,解決方案:

在ThirdActivity.java中重寫onBackPressed()方法來解決:package?com.example.hellotest01;import?android.content.Intent;import?android.support.v7.app.AppCompatActivity;import?android.os.Bundle;import?android.view.View;import?android.widget.Button;public?class?ThirdActivity?extends?AppCompatActivity?{????@Override

protected?void?onCreate(Bundle?savedInstanceState)?{????????super.onCreate(savedInstanceState);

setContentView(R.layout.activity_third);

Button?button3?=?(Button)?findViewById(R.id.button_3);

button3.setOnClickListener(new?View.OnClickListener()?{????????????@Override

public?void?onClick(View?v)?{//????????????????新建一個啟動器,不過只用來傳遞數據而已,沒有任何意圖

Intent?intent?=?new?Intent();

intent.putExtra("data_return",?"你好,活動二,button");//????????????????setResult()方法專門用于返回上一個為活動數據的//????????????????第一個參數用于向上一個活動返回處理結果,一般只使用RESULT_OK和RESULT_CANCELED這兩個值//????????????????第二個參數則把帶有數據的Intent傳遞回去,然后調用finish()方法銷毀當前活動

setResult(RESULT_OK,?intent);

finish();

}

});

}????@Override

public?void?onBackPressed()?{

Intent?intent?=?new?Intent();

intent.putExtra("data_return","你好,活動二,back");

setResult(RESULT_OK,intent);

finish();

}

}

運行,點擊:按鈕一 按鈕二 按鈕三,這時候回到“活動二”界面,再按下“按鈕二”,這時候點擊“Back鍵”:

AAffA0nNPuCLAAAAAElFTkSuQmCC

image

AAffA0nNPuCLAAAAAElFTkSuQmCC

image

AAffA0nNPuCLAAAAAElFTkSuQmCC

image

AAffA0nNPuCLAAAAAElFTkSuQmCC

image

AAffA0nNPuCLAAAAAElFTkSuQmCC

image

AAffA0nNPuCLAAAAAElFTkSuQmCC

image

AAffA0nNPuCLAAAAAElFTkSuQmCC

作者:我睡醒剛剛

鏈接:https://www.jianshu.com/p/9b409e5f54df

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/392073.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/392073.shtml
英文地址,請注明出處:http://en.pswp.cn/news/392073.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

實習一年算工作一年嗎?_經過一年的努力,我如何找到軟件工程工作

實習一年算工作一年嗎?by Andrew Ngo通過安德魯恩戈 經過一年的努力&#xff0c;我如何找到軟件工程工作 (How I landed a software engineering job after a year of hard work) Many of us think the path to becoming a software engineer requires years of education an…

學習深度學習需要哪些知識_您想了解的有關深度學習的所有知識

學習深度學習需要哪些知識有關深層學習的FAU講義 (FAU LECTURE NOTES ON DEEP LEARNING) Corona was a huge challenge for many of us and affected our lives in a variety of ways. I have been teaching a class on Deep Learning at Friedrich-Alexander-University Erlan…

參加開發競賽遇到的問題【總結】

等比賽完就寫。 轉載于:https://www.cnblogs.com/jiangyuanjia/p/11261978.html

html5--3.16 button元素

html5--3.16 button元素 學習要點 掌握button元素的使用button元素 用來建立一個按鈕從功能上來說&#xff0c;與input元素建立的按鈕相同button元素是雙標簽&#xff0c;其內部可以配置圖片與文字&#xff0c;進行更復雜的樣式設計不僅可以在表單中使用&#xff0c;還可以在其…

如何注冊鴻蒙id,鴻蒙系統真機調試證書 和 設備ID獲取

鴻蒙系統真機調試創建項目創建項目創建應用創建鴻蒙應用(注意&#xff0c;測試階段需要發郵件申請即可)關聯應用項目進入關聯 添加引用準備調試使用的 p12 和證書請求 csr使用以下命令// 別名"test"可以修改&#xff0c;但必須前后一致&#xff0c;密碼請自行修改key…

Java—實現 IOC 功能的簡單 Spring 框架

編寫一個實現 IOC 功能的簡單 Spring 框架&#xff0c;包含對象注冊、對象管理、及暴 露給外部獲取對象的功能&#xff0c;并編寫測試程序。擴展注冊器的方式&#xff0c;要求采用 XML 和 txt 文件。 源代碼 package myspring;import java.lang.reflect.Method; import java.…

讀zepto核心源碼學習JS筆記(3)--zepto.init()

上篇已經講解了zepto.init()的幾種情況,這篇就繼續記錄這幾種情況下的具體分析. 1. 首先是第一種情況,selector為空 既然是反向分析,那我們先看看這句話的代碼; if (!selector) return zepto.Z() 這里的返回值為zepto.Z();那我們繼續往上找zepto.Z()函數 zepto.Z function(dom…

css flexbox模型_Flexbox和CSS Grid之間的主要區別

css flexbox模型by Shaira Williams由莎拉威廉姆斯(Shaira Williams) Flexbox和CSS Grid之間的主要區別 (The main differences between Flexbox and CSS Grid) Dimensions define the primary demarcation between Flexbox and CSS Grid. Flexbox was designed specifically …

置信區間估計 預測區間估計_估計,預測和預測

置信區間估計 預測區間估計Estimation implies finding the optimal parameter using historical data whereas prediction uses the data to compute the random value of the unseen data.估計意味著使用歷史數據找到最佳參數&#xff0c;而預測則使用該數據來計算未見數據的…

鴻蒙系統還會推出嗎,華為明年所有自研設備都升級鴻蒙系統,還會推出基于鴻蒙系統的新機...

不負期許&#xff0c;華為鴻蒙OS手機版如期而至。今日(12月15日)&#xff0c;鴻蒙OS 2.0手機開發者Beta版本正式上線&#xff0c;支持運行安卓應用&#xff0c;P40、Mate 30系列可申請公測。國內媒體報道稱&#xff0c;華為消費者業務軟件部副總裁楊海松表示&#xff0c;按照目…

C#中將DLL文件打包到EXE文件

1&#xff1a;在工程目錄增加dll目錄&#xff0c;然后將dll文件復制到此目錄&#xff0c;例如&#xff1a; 2&#xff1a;增加引用&#xff0c;定位到工程的dll目錄&#xff0c;選中要增加的dll文件 3&#xff1a;修改dll文件夾下面的dll文件屬性 選中嵌入式資源&#xff0c;不…

PopupMenu控件的使用

1、用PopupMenu控件能進行右鍵菜單的實現&#xff0c;它的實現還需要綁定到barManager控件上&#xff0c;在barManager的Customize中添加右鍵所需要顯示的功能。 2、PopupMenu屬性欄中綁定Manager為barManager&#xff1b; 3、窗體加載事件中創建 this.popupMenu1.AddItems(new…

Java—動態代理

動態代理利用了JDK API&#xff0c;動態地在內存中構建代理對象&#xff0c;從而實現對目標對象的代理功能。動態代理又被稱為JDK代理或接口代理。 靜態代理與動態代理的區別主要在&#xff1a; 靜態代理在編譯時就已經實現&#xff0c;編譯完成后代理類是一個實際的class文件…

Oracle VM Virtual Box的安裝

安裝Oracle VM Virtual Box安裝擴展插件 選擇"管理"?"全局設定" 在設置對話框中&#xff0c;選擇"擴展" 選擇"添加包" 找到"Oracle_VM_VirtualBox_Extension_Pack-4.1.18-78361"&#xff0c;點擊"打開" 5&#x…

python 移動平均線_Python中的SMA(短期移動平均線)

python 移動平均線With the evolution of technology rapidly evolving, so do strategies in the stock market. In this post, I’ll go over how I created a SMA(Short Moving Average) strategy.隨著技術的飛速發展&#xff0c;股票市場的策略也在不斷發展。 在本文中&…

angular中的href=unsafe:我該怎么擺脫你的溺愛!!

解決方法&#xff1a;angular.module加入下面這行&#xff1a;&#xff08;依據Angular changes urls to “unsafe:” in extension page&#xff09; .config(function($compileProvider){//注:有些版本的angularjs為$compileProvider.urlSanitizationWhitelist(/^\s*(https?…

android view gesturedetector,如何在Android中利用 GestureDetector進行手勢檢測

如何在Android中利用 GestureDetector進行手勢檢測發布時間&#xff1a;2020-11-26 16:15:21來源&#xff1a;億速云閱讀&#xff1a;92作者&#xff1a;Leah今天就跟大家聊聊有關如何在Android中利用 GestureDetector進行手勢檢測&#xff0c;可能很多人都不太了解&#xff0c…

Ubuntu2204配置samba

0.前情說明 samba服務器主要是用來局域網共享文件的&#xff0c;如果想公網共享可能行不通&#xff0c;我已經踩坑一天了 所以說如果你想滿足公網samba共享你就可以不要看下去了 1.參考連接 Ubuntu 安裝 Samba 服務器_ubuntu安裝samba服務器-CSDN博客 2.安裝samba服務 sud…

Java—BIO模型

利用 BIO 模型&#xff08;傳統阻塞 IO 模型&#xff09;實現多用戶訪問 源代碼 Server類 public class server {public static void main(String[] args) {ExecutorService executorService Executors.newFixedThreadPool(6);try {ServerSocket serverSocketnew ServerSocke…

c++學編程如何鍛煉耐力_我如何學習編程:這是一項耐力運動

c學編程如何鍛煉耐力by Amy M Haddad通過艾米M哈達德(Amy M Haddad) 我如何學習編程&#xff1a;這是一項耐力運動 (How I’m learning to program: it’s an endurance sport) 為什么我的編程學習軌跡反映了我作為跑步者的訓練方式 (Why my learning trajectory for programm…