rainit2006 / Android-

记录一下Android基本知识
0 stars 0 forks source link

Understanding: startActivityForResult and requestCode #4

Open rainit2006 opened 7 years ago

rainit2006 commented 7 years ago

http://qiita.com/kskso9/items/01c8bbb39355af9ec25e

Ex. 元のアクティビティのクラスをFirstActivity.java、遷移先のアクティビティのクラスをSecondActivity.javaとしている。

Intentの生成と遷移

``` private static final int REQUEST_CODE = 1; @Override protected void onCreate(Bundle savedInstanceState){ ...... Intent intent = new Intent(this, SecondActivity.class); startActivityForResult(intent, REQUEST_CODE); } ``` 遷移先で値をセットした上で、元のアクティビティに戻る EditTextに適当な文字列を入力し、OKボタンを押すと元のアクティビティに戻る ``` @Override protected void onCreate(Bundle savedInstanceState){ ... Intent intent = new Intent(); Button btn = (Button)findViewById(R.id.button); EditText edit = (EditText)findViewById(R.id.edit); btn.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // クリック時の処理 intent.putExtra("INPUT_STRING", edit.getText().toString()); setResult(RESULT_OK, intent); finish(); } }); } ``` 1.元のアクティビティへのintentを生成する。 2.ボタンにリスナーをつける。内部では、 - 1.EditTextに入力されたテキストに"INPUT_STRING"というキーをつけてintentに突っ込む。 - 2. setResult(RESULT_OK)を記述。これに関しては、後ほど説明する。 - 3.アクティビティをfinish()する。 元のアクティビティで値を受ける ``` @Override protected void onActivityResult(int requestCode, int resultCode, Intent data){ switch(requestCode){ //SecondActivityから戻ってきた場合 case(REQUEST_CODE): if(resultCode == RESULT_OK){ //OKボタンを押して戻ってきたときの処理 Log.v("Edit Text", data.getExtra("INPUT_STRING")); }else if(resultCode == RESULT_CANCELED){ //キャンセルボタンを押して戻ってきたときの処理 }else{ //その他 } break; default: break; } ```