基于android startActivityForResult的學習心得總結
從昨晚到現(xiàn)在終于調試通了一個startActivityForResult的例子,網(wǎng)上要么有些說的太復雜了,要么說的含糊,搞的我走了很多彎路,所以寫篇心得。
在一個主界面(主Activity)上能連接往許多不同子功能模塊(子Activity上去),當子模塊的事情做完之后就回到主界面,還同時返回一些子模塊完成的數(shù)據(jù)交給主Activity處理。 用startActivity啟動主界面是一個新的Intent實例,而訪問的主界面還在activity棧的下面沒有調出來,這樣做的一個最大的問題是,回不到原界面就不能多個子功能模塊共同來給主界面提供數(shù)據(jù)或服務了。這個時候就要用startActivityForResult了!
目的: MainActivity.java 是主界面,SecondActivity.java 是子功能模塊,要從main啟動second,second收到main發(fā)來的數(shù)據(jù)干完活之后,按按鍵OK會把結果匯報給main,同時自己關閉返回到main。
具體實現(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ù)里,接收來自main里的intent發(fā)來的數(shù)據(jù)。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
okButton = (Button)findViewById(R.id.ok); //按這個ok按鍵,會返回到main。
Intent intent = getIntent();
String getStr = intent.getStringExtra("send");
TextView tv = (TextView)findViewById(R.id.sendText);
tv.setText(getStr);
Toast.makeText(SecondActivity.this,
"從MainActivity傳回來的數(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);//這種方法今天才學的,記下!方便這樣寫,這塊沒有給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ā)來的數(shù)據(jù)。在MainActivity里復寫它的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,
"我回來的,第二個activity傳回的數(shù)據(jù)是:"+str,
Toast.LENGTH_SHORT).show();
}
}
注意:這里面不要再新建Intent,onActivityResult有三個參數(shù),第三個參數(shù)就是Intent,只需要用他做參數(shù)就行了。
相關文章
Android監(jiān)聽輸入法彈窗和關閉的實現(xiàn)方法
用過ios的都知道ios上輸入法關閉的同時會自動關閉輸入框,那么在android上如何實現(xiàn)監(jiān)聽輸入法彈出和關閉呢?接下來通過本文給大家分享一種可靠的實現(xiàn)方式2016-11-11
2021最新Android筆試題總結美團Android崗職能要求
這篇文章主要介紹了2021最新Android筆試題總結以及美團Android崗職能要求,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-08-08
DrawerLayout結合Tollbar實現(xiàn)菜單側滑效果
這篇文章主要為大家詳細介紹了DrawerLayout結合Tollbar實現(xiàn)菜單側滑效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-12-12
Android編程實現(xiàn)在adapter中進行數(shù)據(jù)操作的方法
這篇文章主要介紹了Android編程實現(xiàn)在adapter中進行數(shù)據(jù)操作的方法,結合實例形式分析了Android基于adapter操作數(shù)據(jù)的相關步驟與實現(xiàn)技巧,需要的朋友可以參考下2017-02-02
Android自定義View實現(xiàn)繪制水波浪溫度刻度表
這篇文章主要為大家詳細介紹了Android如何利用自定義View實現(xiàn)一個水波浪溫度刻度表,文中的示例代碼講解詳細,感興趣的小伙伴可以嘗試一下2022-11-11

