基于android startActivityForResult的學習心得總結
更新時間:2013年05月28日 11:46:01 作者:
本篇文章是對android中的startActivityForResult進行了詳細的分析介紹,需要的朋友參考下
從昨晚到現(xiàn)在終于調(diào)試通了一個startActivityForResult的例子,網(wǎng)上要么有些說的太復雜了,要么說的含糊,搞的我走了很多彎路,所以寫篇心得。
在一個主界面(主Activity)上能連接往許多不同子功能模塊(子Activity上去),當子模塊的事情做完之后就回到主界面,還同時返回一些子模塊完成的數(shù)據(jù)交給主Activity處理。 用startActivity啟動主界面是一個新的Intent實例,而訪問的主界面還在activity棧的下面沒有調(diào)出來,這樣做的一個最大的問題是,回不到原界面就不能多個子功能模塊共同來給主界面提供數(shù)據(jù)或服務了。這個時候就要用startActivityForResult了!
目的: MainActivity.java 是主界面,SecondActivity.java 是子功能模塊,要從main啟動second,second收到main發(fā)來的數(shù)據(jù)干完活之后,按按鍵OK會把結果匯報給main,同時自己關閉返回到main。
具體實現(xiàn):
分四部分:
1,在MainActivity里面設置一個按鈕sendBuddle,發(fā)送數(shù)據(jù)到SecondActivity,同時跳轉到second界面。按鍵監(jiā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());
}
3,在SecondActivity里實現(xiàn)監(jiān)聽Ok按鍵,按下后返回到MainActivity,同時自己關閉,并給MainActivity發(fā)送數(shù)據(jù)。ok按鍵的監(jiān)聽代碼如下:
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ù)就行了。
在一個主界面(主Activity)上能連接往許多不同子功能模塊(子Activity上去),當子模塊的事情做完之后就回到主界面,還同時返回一些子模塊完成的數(shù)據(jù)交給主Activity處理。 用startActivity啟動主界面是一個新的Intent實例,而訪問的主界面還在activity棧的下面沒有調(diào)出來,這樣做的一個最大的問題是,回不到原界面就不能多個子功能模塊共同來給主界面提供數(shù)據(jù)或服務了。這個時候就要用startActivityForResult了!
目的: MainActivity.java 是主界面,SecondActivity.java 是子功能模塊,要從main啟動second,second收到main發(fā)來的數(shù)據(jù)干完活之后,按按鍵OK會把結果匯報給main,同時自己關閉返回到main。
具體實現(xiàn):
分四部分:
1,在MainActivity里面設置一個按鈕sendBuddle,發(fā)送數(shù)據(jù)到SecondActivity,同時跳轉到second界面。按鍵監(jiā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());
}
3,在SecondActivity里實現(xiàn)監(jiān)聽Ok按鍵,按下后返回到MainActivity,同時自己關閉,并給MainActivity發(fā)送數(shù)據(jù)。ok按鍵的監(jiān)聽代碼如下:
復制代碼 代碼如下:
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獲取當前手機網(wǎng)絡類型(2g、3g、4g、wifi)以及手機型號、版本號代碼
這篇文章主要介紹了Android獲取當前手機網(wǎng)絡類型(2g、3g、4g、wifi)以及手機型號、版本號的相關資料,需要的朋友可以參考下2016-03-03Android 詳解ThreadLocal及InheritableThreadLocal
這篇文章主要介紹了Android 詳解ThreadLocal及InheritableThreadLocal的相關資料,需要的朋友可以參考下2017-01-01Android BroadcastReceiver廣播注冊方式總結
這篇文章主要介紹了Android BroadcastReceiver廣播注冊方式總結的相關資料,需要的朋友可以參考下2017-01-01AndroidStuio插件開發(fā)適用于jetbrains全家桶
這篇文章主要介紹了AndroidStuio插件開發(fā)適用于jetbrains全家桶,本文通過實例給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12詳解Android App中的AsyncTask異步任務執(zhí)行方式
這篇文章主要介紹了Android App中的AsyncTask異步任務執(zhí)行方式,文中舉了一個打開網(wǎng)絡圖片的例子幫助大家直觀理解,需要的朋友可以參考下2016-04-04