반응형

출처: https://coding-factory.tistory.com/203

 

[Android] 인텐트(Intent) 화면 간 이동과 데이터 전달

어플리케이션을 만들때 하나의 화면을 가지고 어플리케이션을 만들지는 않죠. 하나의 화면에 모든기능을 담기란 불가능합니다. 대부분의 어플리케이션은 많은 View를 모으고 모아서 만든 결과물입니다. 그래서 안..

coding-factory.tistory.com

 

https://hashcode.co.kr/questions/392/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C%EC%97%90%EC%84%9C-%EC%9D%B4%EC%A0%84-%EC%95%A1%ED%8B%B0%EB%B9%84%ED%8B%B0%EB%A1%9C-%EB%8F%8C%EC%95%84%EA%B0%80%EB%8A%94%EA%B1%B4-%EC%96%B4%EB%96%BB%EA%B2%8C%ED%95%98%EB%82%98%EC%9A%94

 

안드로이드에서 이전 액티비티로 돌아가는건 어떻게하나요?

발생하는 문제 및 실행환경 이전 액티비티로 돌아갈 수 있는 간단한 앱을 만들고 싶은데요. 이전 액티비티로 돌아 가려면 어떤 코드가 필요할까요?

hashcode.co.kr

 

https://liveonthekeyboard.tistory.com/entry/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-startActivityForResult-onActivityResult-%EC%82%AC%EC%9A%A9%EB%B2%95

 

[안드로이드] startActivityForResult ,onActivityResult 사용법

[안드로이드] startActivityForResult ,onActivityResult 사용법 안드로이드 개발을 진행하다 보면 단순히 액티비티를 전환하고 끝! 이 아니라 후속 액티비티에서 작업한 결과물을 호출한 액티비티에서 사용하고..

liveonthekeyboard.tistory.com

 

1. 단순한 값 전달인 경우

 

인텐트 생성한 후, Intent의 putExtra() 메소드를 이용하여 추가로 보내고 싶은 값 이름과 그 값을 전달한다.

                        
Intent intent = new Intent(MainActivity.this, NextActivity.class);
intent.putExtra("ID", "abc");

 

그리고 다음 액티비티에서 getExtra() 메소드를 사용하여 이전 액티비티에서 보낸 값을 받는다.

                        
Intent intent = getIntent();
String id = intent.getStringExtra("ID");

 

2. 다른 액티비티에서 값을 전달 받은 후 다시 이전 액티비티로 돌아오는 경우

 

인텐트 생성 후 인텐트로 다른 액티비티를 호출할 때 startActivityForResult() 메소드를 사용한다.

이 때 인텐트와 같이 들어가는 int 매개변수는 사용자가 임의로 정의하는 값이다.

보통 저런 값은 명확하게 하기 위해 static 변수로 특정값을 정의한다.

                        
Intent intent = new Intent(MainMapActivity.this, NextActivity.class);
startActivityForResult(intent, 1000);

 

그리고 다음 액티비티에서는 setResult() 메소드를 이용하여 이전 액티비티로 값을 보낸다.

RESULT_OK는 안드로이드에서 정의된 값으로, 결과를 성공적으로 받아온 경우 호출되는 값이다.

finish() 메소드는 이 액티비티를 종료하기 위함이며, 종료하면 이전 액티비티로 돌아간다.

                        
String id = "abc";
Intent intent = new Intent();
intent.putExtra("memo", id);
setResult(RESULT_OK, intent);
finish();

 

호출받은 값을 받은 이전 액티비티에서는 onActivityResut() 메소드를 오버라이딩하여 받은 값에 대한 처리를 한다.

                        
@Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (resultCode == RESULT_OK) {
            switch (requestCode) {
                case 1000:
                    String id = data.getStringExtra("id");
                    Toast.makeText(this, id, Toast.LENGTH_LONG).show();
                    break;
                case 2000:
                    String address = data.getStringExtra("address");
                    Toast.makeText(this, address, Toast.LENGTH_LONG).show();
                    break;
            }
        }
    }
반응형
Posted by 애콜라이트
l

free counters