본문 바로가기

Programming Practice/Android

한 화면에서 버튼을 눌렀을 때 다른 화면을 호출하기

1. 다른 화면을 wizard를 이용해서 생성한다.

   - Android - Android Activity

   - activity 와 xml이 함께 생성되며, AndroidManifest.xml 도 설정된다.


2. 한 화면에서 Button 을 만들고, 클릭했을 때 호출되는 메서드를 매핑한다.

  - 화면에서 Button 만드는 예시


3. 호출되는 메서드에서 다른 화면을 호출한다.

 * Intent 라는 class를 사용하는 것이 중요하며, Intent 의 정의는 아래와 같다.

 abstract description of an operation to be performed


4. 다른 화면을 끝내고 싶을 때

finish(); 라는 명령어를 사용하면, 호출한 화면이 종료되고, 호출했던 화면으로 돌아간다.


(option) 호출한 다른 화면에서 호출했던 화면으로 데이터를 넘겨줘야 할 때


(option) 3. 호출되는 메서드에서 다른 화면을 호출한다.

- startActivity 대신 startActivityForResult 를 호출한다.

- request code를 추가로 파라미터로 넘겨준다. 


(option) 3-5. 다른 화면에서 Intent 객체에 호출했던 화면으로 넘겨줄 data를 설정한다.

- intent 가져오기 : Intent intent = getIntent();

- intent 에 값 설정하기 : intent.putExtra("key", value);

  * 주의 : EditText.getText().toString() 와 같이 반드시 toString()을 해줘야 한다. getText() method 가 이름을 볼 때 String을 return할 것 같지만, 그렇지 않음.

- result 값 설정하기 : this.setResult(RESULT_OK, intent); 


(option) 5. 호출했던 화면에서 호출한 화면에서 넘겨준 데이터를 처리한다.

- onActivityResult 라는 메서드에서 로직을 구현한다. (startActivityForResult를 통해 호출한 activity가 종료되면, 자동으로 onActivityResult 라는 메서드가 호출된다.)

- request code 와 result code를 함께 체크한다.

- intent에 설정되어 있던 값 가져오기 : intent.getStringExtra("key");

- 화면 레이아웃을 수정할 경우, adapter 의 data 를 수정하고, adpater에 data가 수정되었다고, 알려준다.(notifyDataSetChanged();) CursorAdapter 일 경우 changeCursor(cursor) 로 설정한다.


(option) default 화면 전환 효과를 없애고 싶을 때

6. startActivity() 나 finish() 뒤에 overridePendingTransition(0,0); 을 추가한다.

- default로 제공되는 화면 전환 효과는 가운데서 시작해서 전체로 퍼지는 효과이다. 이것을 없애고 싶을 때, 위 로직을 적어준다.

 overridePendingTransition(0,0) 는 어떠한 animation 효과도 주지 않겠다는 뜻이다.


참고 : http://developer.android.com/guide/topics/resources/animation-resource.html

http://developer.android.com/reference/android/app/Activity.html



<<HeadFirst Android 편 참고>>