startActivity ForResult()とstartActivity()の違い


       startActivityForResult startActivity       :
1, startActivity( )     
                       ,         ,        startActivity( )。
2, startActivityForResult( ) 
                        ,             ,         Activity,
    Activity     (this.finish()),           Activity,      Activity onActivityResult( )  。 

androidでstartActivity ForResultを使用してデータを転送(転送)
仮に、私のところには2つのActivity:AとBがあり、AからBにデータを渡すときにBundleパッケージデータを採用し、AからBにジャンプし、Bがデータをカプセル化してAに返し、Aにジャンプする必要がある場合.では、Aでデータを受信するときにBundleが空であるかどうかを判断しなければならない.初めてAにアクセスしたとき(すなわち、Bがまだ返信していないとき)、Bundleが空であるため、これは明らかに面倒で賢明ではない.
幸いなことにstartActivity ForResultは私たちにもっと良い解決策を与えました.
1.ジャンプするときはstartActivity(intent)という方法ではなく、startActivity ForResult(intent,0)です.
1
Intent intent
=
new
Intent();
2
intent.setClass(A.
this
, B.
class
);
3
Bundle bundle
=
new
Bundle();
4
String str1
=
"
aaaaaa
"
;
5
bundle.putString(
"
str1
"
, str1);
6
intent.putExtras(bundle);
7
startActivityForResult(intent,
0
);
//
ここではstartActivity ForResultを使用してジャンプを行います.ここでの0は一つの根拠で、他の値を書くことができますが、必ず>=0にします.
2.onActivity Resultメソッドを書き換え、Bエコーのデータを受信する.
1
protected
void
onActivityResult(
int
requestCode,
int
resultCode, Intent data) {
2
switch
(resultCode) {
//
resultCodeは返信のマークで、私がBで返信したのはRESULT_です.OK
3
 
case
RESULT_OK:
4
Bundle b
=
data.getExtras();
//
dataはBで返送されるIntent
5
 
String str
=
b.getString(
"
str1
"
);
//
strはリターンの値である
6
break
;
7
default
:
8
break
;
9
}
10
}
3.Bでデータを再送する場合はsetResultメソッドを使用し、その後finishメソッドを呼び出す.
setResult(RESULT_OK, intent);
//
intentはAからのBundle付きのintentで、もちろん自分で新しいBundleを定義することもできます
finish();
//
ここでfinish()メソッドを呼び出す必要があります
これにより、Bでfinishメソッドが呼び出されると、Aにジャンプすると自動的にonActivity Resultメソッドが呼び出され、Bで返信されたintentが取得されます.詳細なコードは貼らないで、それはただ時間を浪費して、ネット上でstartActivity ForResultについてすべていくつかの転帖で、すべてコードで、見ていて本当にいらいらします.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
http://wiki.emsym.com/index.php?title=Android_MediaPlayer&oldid=5476
http://book.51cto.com/art/201110/296447.htm