基于android startActivityForResult的學(xué)習(xí)心得總結(jié)
從昨晚到現(xiàn)在終于調(diào)試通了一個(gè)startActivityForResult的例子,網(wǎng)上要么有些說(shuō)的太復(fù)雜了,要么說(shuō)的含糊,搞的我走了很多彎路,所以寫篇心得。
在一個(gè)主界面(主Activity)上能連接往許多不同子功能模塊(子Activity上去),當(dāng)子模塊的事情做完之后就回到主界面,還同時(shí)返回一些子模塊完成的數(shù)據(jù)交給主Activity處理。 用startActivity啟動(dòng)主界面是一個(gè)新的Intent實(shí)例,而訪問(wèn)的主界面還在activity棧的下面沒(méi)有調(diào)出來(lái),這樣做的一個(gè)最大的問(wèn)題是,回不到原界面就不能多個(gè)子功能模塊共同來(lái)給主界面提供數(shù)據(jù)或服務(wù)了。這個(gè)時(shí)候就要用startActivityForResult了!
目的: MainActivity.java 是主界面,SecondActivity.java 是子功能模塊,要從main啟動(dòng)second,second收到main發(fā)來(lái)的數(shù)據(jù)干完活之后,按按鍵OK會(huì)把結(jié)果匯報(bào)給main,同時(shí)自己關(guān)閉返回到main。
具體實(shí)現(xiàn):
分四部分:
class sendButtonListen implements OnClickListener{
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent();
String str = "dajia hao ";
intent.putExtra("send", str);
intent.setClass(MainActivity.this, SecondActivity.class);
startActivityForResult(intent, 0);
}
}
2,在SecondActivity里面的OnCreate函數(shù)里,接收來(lái)自main里的intent發(fā)來(lái)的數(shù)據(jù)。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
okButton = (Button)findViewById(R.id.ok); //按這個(gè)ok按鍵,會(huì)返回到main。
Intent intent = getIntent();
String getStr = intent.getStringExtra("send");
TextView tv = (TextView)findViewById(R.id.sendText);
tv.setText(getStr);
Toast.makeText(SecondActivity.this,
"從MainActivity傳回來(lái)的數(shù)據(jù)是:"+getStr,
Toast.LENGTH_SHORT).show();
okButton.setOnClickListener(new okButtonListen());
}
class okButtonListen implements OnClickListener{
public void onClick(View v) {
// TODO Auto-generated method stub
Intent sendIntent = new Intent(SecondActivity.this, MainActivity.class);//這種方法今天才學(xué)的,記下!方便這樣寫,這塊沒(méi)有給Inent綁定
Bundle bundle = new Bundle();
bundle.putString("send", "大家好");
sendIntent.putExtras(bundle);
SecondActivity.this.setResult(RESULT_OK, sendIntent);
SecondActivity.this.finish();
}
4,返回到main后,main要接收second發(fā)來(lái)的數(shù)據(jù)。在MainActivity里復(fù)寫它的OnActivityResult方法。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if(resultCode==RESULT_OK){
Bundle bundle = data.getExtras();
String str = bundle.getString("send");
Toast.makeText(MainActivity.this,
"我回來(lái)的,第二個(gè)activity傳回的數(shù)據(jù)是:"+str,
Toast.LENGTH_SHORT).show();
}
}
注意:這里面不要再新建Intent,onActivityResult有三個(gè)參數(shù),第三個(gè)參數(shù)就是Intent,只需要用他做參數(shù)就行了。
相關(guān)文章
Android監(jiān)聽(tīng)輸入法彈窗和關(guān)閉的實(shí)現(xiàn)方法
用過(guò)ios的都知道ios上輸入法關(guān)閉的同時(shí)會(huì)自動(dòng)關(guān)閉輸入框,那么在android上如何實(shí)現(xiàn)監(jiān)聽(tīng)輸入法彈出和關(guān)閉呢?接下來(lái)通過(guò)本文給大家分享一種可靠的實(shí)現(xiàn)方式2016-11-11
淺析Android 快速實(shí)現(xiàn)圖片壓縮與上傳功能
在Android對(duì)手機(jī)相冊(cè)中的圖片的壓縮和上傳到服務(wù)器上,這樣的功能在每個(gè)app開(kāi)發(fā)中都會(huì)有這樣的需求.所以今天就對(duì)android端怎么快速實(shí)現(xiàn)圖片壓縮和上傳進(jìn)行簡(jiǎn)單的分析2017-08-08
android實(shí)現(xiàn)簡(jiǎn)單圓弧效果
這篇文章主要為大家詳細(xì)介紹了android實(shí)現(xiàn)簡(jiǎn)單圓弧效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-08-08
2021最新Android筆試題總結(jié)美團(tuán)Android崗職能要求
這篇文章主要介紹了2021最新Android筆試題總結(jié)以及美團(tuán)Android崗職能要求,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-08-08
Android設(shè)置默認(rèn)鎖屏壁紙接口的方法
這篇文章主要介紹了Android默認(rèn)鎖屏壁紙接口的設(shè)置方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01
安卓(Android)實(shí)現(xiàn)3DTouch效果
3DTouch是什么效果的大家應(yīng)該都知道了。本文將介紹在Android中如何實(shí)現(xiàn)3DTouch的效果,有需要的可以參考學(xué)習(xí)。2016-08-08
DrawerLayout結(jié)合Tollbar實(shí)現(xiàn)菜單側(cè)滑效果
這篇文章主要為大家詳細(xì)介紹了DrawerLayout結(jié)合Tollbar實(shí)現(xiàn)菜單側(cè)滑效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12
Android編程實(shí)現(xiàn)在adapter中進(jìn)行數(shù)據(jù)操作的方法
這篇文章主要介紹了Android編程實(shí)現(xiàn)在adapter中進(jìn)行數(shù)據(jù)操作的方法,結(jié)合實(shí)例形式分析了Android基于adapter操作數(shù)據(jù)的相關(guān)步驟與實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-02-02
Android自定義View實(shí)現(xiàn)繪制水波浪溫度刻度表
這篇文章主要為大家詳細(xì)介紹了Android如何利用自定義View實(shí)現(xiàn)一個(gè)水波浪溫度刻度表,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以嘗試一下2022-11-11

