onActivity Resultの使い方
10253 ワード
主な機能:1つのメインインタフェース(メインActivity)に多くの異なるサブ機能モジュール(サブActivity)に接続でき、サブモジュールの仕事が終わったらメインインタフェースに戻り、サブモジュールが完成したデータをメインActivity処理に渡すこともできます.このようなデータ交換には、コールバック関数onActivity Resultが使用されます.<1>startActivityForResult(Intent intent, int requestCode); **1番目のパラメータ:Intentオブジェクトの2番目のパラメータ:>=0の場合、Activityが終了するとrequestCodeはonActivity Result()に返されます.返されたデータがどのActivityから返されたかを判断するために**
<2>onActivity Result(int requestCode,int resultCode,Intent data)**最初のパラメータ:この整数requestCodeはonActivity Resultに提供され、返されたデータがどのActivityから返されたかを確認します.このrequestCodeはstartActivity ForResultのrequestCodeに対応しています.2番目のパラメータ:この整数resultCodeは、サブActivityによってsetResult()メソッドで返されます.3番目のパラメータ:返されるデータを持つIntentオブジェクト.**
<3>setResult(int resultCode,Intent data)このメソッドを呼び出してActivityが返したいデータを親Activity**の最初のパラメータに返します.Activityが終了するとresultCodeはonActivity Result()に返され、一般的にRESULT_CANCELED , RESULT_OK. 2番目のパラメータ:1つのIntentオブジェクトで、親Activityへのデータを返します.**
この例では、Activityが3つあります.火星に飛んでotherActivityにジャンプし、地球が火星に与えたメッセージをotherActivityに表示します.クリックして地球に戻ると火星が地球に持ってきたメッセージを主Activity.に伝えます.同理:月に飛んでthirdActivityにジャンプし、地球が月に与えたメッセージをthirdActivityに表示する.クリックして地球に戻る時に月が地球に持ってきたニュースを主Activity.に伝えます.
具体的な実装:メインActivity:
otherActivity.java
thirdActivity.java
<2>onActivity Result(int requestCode,int resultCode,Intent data)**最初のパラメータ:この整数requestCodeはonActivity Resultに提供され、返されたデータがどのActivityから返されたかを確認します.このrequestCodeはstartActivity ForResultのrequestCodeに対応しています.2番目のパラメータ:この整数resultCodeは、サブActivityによってsetResult()メソッドで返されます.3番目のパラメータ:返されるデータを持つIntentオブジェクト.**
<3>setResult(int resultCode,Intent data)このメソッドを呼び出してActivityが返したいデータを親Activity**の最初のパラメータに返します.Activityが終了するとresultCodeはonActivity Result()に返され、一般的にRESULT_CANCELED , RESULT_OK. 2番目のパラメータ:1つのIntentオブジェクトで、親Activityへのデータを返します.**
この例では、Activityが3つあります.火星に飛んでotherActivityにジャンプし、地球が火星に与えたメッセージをotherActivityに表示します.クリックして地球に戻ると火星が地球に持ってきたメッセージを主Activity.に伝えます.同理:月に飛んでthirdActivityにジャンプし、地球が月に与えたメッセージをthirdActivityに表示する.クリックして地球に戻る時に月が地球に持ってきたニュースを主Activity.に伝えます.
具体的な実装:メインActivity:
package xiaosi.onActivityResult;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class OnActivityResultActivity extends Activity {
private Button button = null;
private Button button1 = null;
private TextView text = null;
private static final int Mars = 0;
private static final int Moon = 1;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
text = (TextView) findViewById(R.id.text);
button = (Button) findViewById(R.id.button);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v)
{
Intent intent = new Intent(OnActivityResultActivity.this, otherActivity.class);
String content = " : , 。 ";
intent.putExtra("FromEarth", content);
startActivityForResult(intent, Mars);
}
});
button1 = (Button) findViewById(R.id.button1);
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v)
{
Intent intent = new Intent(OnActivityResultActivity.this, thirdActivity.class);
String content = " : , 。 ";
intent.putExtra("FromEarth", content);
startActivityForResult(intent, Moon);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
switch (requestCode)
{
case Mars:
Bundle MarsBuddle = data.getExtras();
String MarsMessage = MarsBuddle.getString("FromMars");
text.setText(MarsMessage);
break;
case Moon:
Bundle MoonBuddle = data.getExtras();
String MoonMessage = MoonBuddle.getString("FromMoon");
text.setText(MoonMessage);
break;
}
}
}
otherActivity.java
package xiaosi.onActivityResult;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class otherActivity extends Activity {
private Button button = null;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.other);
Intent EarthIntent = getIntent();
String EarthMessage = EarthIntent.getStringExtra("FromEarth");
button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
Intent intent = new Intent(otherActivity.this, OnActivityResultActivity.class);
String passString = " :Hello, Jack, ";
intent.putExtra("FromMars", passString);
setResult(RESULT_OK, intent);
finish();
}
});
TextView textView = (TextView) findViewById(R.id.othertext);
textView.setText(EarthMessage);
}
}
thirdActivity.java
package xiaosi.onActivityResult;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class thirdActivity extends Activity {
private Button button = null;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.third);
Intent EarthIntent = getIntent();
String EarthMessage = EarthIntent.getStringExtra("FromEarth");
button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
Intent intent = new Intent(thirdActivity.this, OnActivityResultActivity.class);
String passString = " :Hello, Lucy, ";
intent.putExtra("FromMoon", passString);
setResult(RESULT_OK, intent);
finish();
}
});
TextView textView = (TextView) findViewById(R.id.thirdtext);
textView.setText(EarthMessage);
}
}