AndroidのstartActivity ForResult()とonActivity Result()とsetResult()のパラメータ解析
参考:AndroidのstartActivity ForResult()とonActivity Result()とsetResult()パラメータ解析、activityパラメータの戻り
一、シーンの使用
1つのメインインタフェース(メインActivity)で複数の異なるサブActivityに意図的にジャンプし、サブモジュールのコード実行が完了した後に再びホームページに戻り、サブactivityで得られたデータをメインインタフェース/完了したデータに表示してメインActivity処理に渡す.このようなバンドデータの意図的なジャンプにはactivityのonActivity Result()メソッドを用いる必要がある.
(1)startActivityForResult(Intent intent, int requestCode);
最初のパラメータ:次のインタフェースにジャンプして使用するデータを運ぶためのIntentオブジェクト、putExtra(A,B)メソッドを使用して、ここに格納されているデータ型は特に多く、基本タイプはすべてサポートされています.
2番目のパラメータ:>=0の場合、Activityが終了するとrequestCodeはonActivity Result()に返されます.ターゲットactivityを識別するために返されるデータがどのActivityから返されるかを決定します.
以下のresultCode機能と一致して、Androidはデータの厳格な一致性を保証するためにわざわざ2つのロックを設けて、データの送信、目的地の厳格な一致性を保証しているような気がします.
(2)onActivityResult(int requestCode, int resultCode, Intent data)
最初のパラメータ:この整数requestCodeはstartActivity ForResultのrequestCodeの値と比較して、返されたデータがどのActivityから返されたかを確認するために使用されます.
2番目のパラメータ:この整数resultCodeは、サブActivityによってsetResult()メソッドで返されます.複数のactivityがデータを返す場合に適用され、どのactivityが返す値なのかを識別します.
3番目のパラメータ:返されるデータを持つIntentオブジェクト.dataでgetXxxExtra( );指定したデータ型のデータを取得する方法です.
(3)setResult(int resultCode, Intent data)
ジャンプを意図した宛先インタフェースでこのメソッドを呼び出してActivityが返したいデータをプライマリActivityに返し、
最初のパラメータ:Activityが終了するとresultCodeはonActivity Result()に返され、一般的にRESULT_CANCELED , RESULT_OKこの値のデフォルトは-1です.
2番目のパラメータ:1つのIntentオブジェクトで、プライマリActivityへのデータを返します.intentオブジェクトに返されるデータを持ち込み、putExtra()メソッドを使用します.
Demo紹介:メインactivityでユーザーにそれぞれ2つのedittextに2つの数を入力させ、この2つの数を次のactivityに渡し、次のactivityで結果を計算して返します.
//主activity対応レイアウトファイル
//レイアウトファイル
一、シーンの使用
1つのメインインタフェース(メインActivity)で複数の異なるサブActivityに意図的にジャンプし、サブモジュールのコード実行が完了した後に再びホームページに戻り、サブactivityで得られたデータをメインインタフェース/完了したデータに表示してメインActivity処理に渡す.このようなバンドデータの意図的なジャンプにはactivityのonActivity Result()メソッドを用いる必要がある.
(1)startActivityForResult(Intent intent, int requestCode);
最初のパラメータ:次のインタフェースにジャンプして使用するデータを運ぶためのIntentオブジェクト、putExtra(A,B)メソッドを使用して、ここに格納されているデータ型は特に多く、基本タイプはすべてサポートされています.
2番目のパラメータ:>=0の場合、Activityが終了するとrequestCodeはonActivity Result()に返されます.ターゲットactivityを識別するために返されるデータがどのActivityから返されるかを決定します.
以下のresultCode機能と一致して、Androidはデータの厳格な一致性を保証するためにわざわざ2つのロックを設けて、データの送信、目的地の厳格な一致性を保証しているような気がします.
(2)onActivityResult(int requestCode, int resultCode, Intent data)
最初のパラメータ:この整数requestCodeはstartActivity ForResultのrequestCodeの値と比較して、返されたデータがどのActivityから返されたかを確認するために使用されます.
2番目のパラメータ:この整数resultCodeは、サブActivityによってsetResult()メソッドで返されます.複数のactivityがデータを返す場合に適用され、どのactivityが返す値なのかを識別します.
3番目のパラメータ:返されるデータを持つIntentオブジェクト.dataでgetXxxExtra( );指定したデータ型のデータを取得する方法です.
(3)setResult(int resultCode, Intent data)
ジャンプを意図した宛先インタフェースでこのメソッドを呼び出してActivityが返したいデータをプライマリActivityに返し、
最初のパラメータ:Activityが終了するとresultCodeはonActivity Result()に返され、一般的にRESULT_CANCELED , RESULT_OKこの値のデフォルトは-1です.
2番目のパラメータ:1つのIntentオブジェクトで、プライマリActivityへのデータを返します.intentオブジェクトに返されるデータを持ち込み、putExtra()メソッドを使用します.
Demo紹介:メインactivityでユーザーにそれぞれ2つのedittextに2つの数を入力させ、この2つの数を次のactivityに渡し、次のactivityで結果を計算して返します.
/*
* activity
*
*/
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.EditText;
public class MainActivity extends Activity {
private Button button;
private final static int REQUESTCODE = 1; //
private EditText one, two, result;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
one = (EditText) findViewById(R.id.Text_one);
two = (EditText) findViewById(R.id.Text_two);
result = (EditText) findViewById(R.id.Text_result);
button = (Button) findViewById(R.id.button);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//
int a = Integer.parseInt(one.getText().toString());
int b = Integer.parseInt(two.getText().toString());
// activity
Intent intent = new Intent(MainActivity.this,
OtherActivity.class);
intent.putExtra("a", a);
intent.putExtra("b", b);
// :startActivity(intent);
startActivityForResult(intent, REQUESTCODE); //REQUESTCODE--->1
}
});
}
//
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// RESULT_OK, activity ,Standard activity result:
// operation succeeded. -1
if (resultCode == 2) {
if (requestCode == REQUESTCODE) {
int three = data.getIntExtra("three", 0);
//
result.setText(String.valueOf(three));
}
}
}
}
//主activity対応レイアウトファイル
//第二个activity
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.EditText;
import android.widget.TextView;
public class OtherActivity extends Activity {
private Button button;
private TextView textView;
private EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.other);
button = (Button) findViewById(R.id.button2);
textView = (TextView) findViewById(R.id.msg);
editText = (EditText) findViewById(R.id.Text_three);
// ,
Intent intent = getIntent(); intent Return the intent that started this activity.
int a = intent.getIntExtra("a", 0); // 0
int b = intent.getIntExtra("b", 0); // 0
textView.setText(a + " + " + b + " = " + " ? ");
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent();
//
int three = Integer.parseInt(editText.getText().toString());
intent.putExtra("three", three); //
// intent , setResult ,
//setResult(resultCode, data); , 1 ,
setResult(2, intent);
finish(); // activity
}
});
}
}
//レイアウトファイル
="vertical" />
="wrap_content" />