안녕하세요. 오늘은 A화면에서 B화면을 띄우고 B화면에서 A화면으로 돌아갈때 값을 반환하는 방법을 알아보겠습니다.
※ 이번 예제에서 사용할 intent 관련된 함수 (1단계부터 했던 함수는 제외했습니다)
※ A화면이 처음 화면이고 B화면은 A화면에서 띄운 화면입니다.
1. 액티비티를 실행하고 결과값을 받을수있는 requestCode를 받는 함수 (startActivity대신에 사용할 함수)
public void startActivityForResult (Intent intent,int requestCode)
intent :실행시킬 화면변수를 넣음
requestCode : 어떠한 값 (onActivityResult에서 필요함)
2. B화면에서 A화면으로 돌아갈때 줄 값
public final void setResult (int resultCode,Intent data)
resultCode : 어떠한 값(onActivityResult에서 필요함)
data : 보내고싶은 데이터.
3. A->B->A로 됬을때 A화면에서 받은값을 처리하는 함수. override함수다.
protected void onActivityResult (int requestCode,int resultCode,Intent data)
- requestCode : 1번 함수에서 나온 변수
- resultCode : 2번함수에서 나온 함수
- data : 받은 값
여기서 requestCode와 resultCode는 값은 여러가지로 구분해서 처리하기위해 사용함.
- A화면코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | public class MainActivity extends AppCompatActivity { Button btn; EditText et; TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn = findViewById(R.id.button2); et = findViewById(R.id.editText); tv = findViewById(R.id.textView4); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent i = new Intent(MainActivity.this,Main2Activity.class ); i.putExtra("one",et.getText().toString()); startActivityForResult(i,1); } }); } @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { //super.onActivityResult(requestCode, resultCode, data); if(requestCode == 1) if(resultCode == 2) tv.setText(data.getStringExtra("result")); } } |
-B화면 코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | public class Main2Activity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); Button btn; TextView tv; tv = findViewById(R.id.textView3); btn = findViewById(R.id.button); Intent intent = getIntent(); tv.setText(intent.getStringExtra("one")); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); intent.putExtra("result","받아라!"); setResult(2,intent); finish(); } }); } } |
'안드로이드 > 이론' 카테고리의 다른 글
안드로이드 Intent 사용하기(2단계) (1) | 2019.04.30 |
---|---|
안드로이드 Intent 사용하기(1단계) (1) | 2019.04.14 |
안드로이드 이미지뷰 크기 제어하기 (0) | 2019.01.26 |
안드로이드스튜디오 권한설정하기 (3) | 2019.01.20 |
안드로이드 Toast메세지에 대해 알아보기 (0) | 2017.08.28 |