[Android] Activity 호출하기

Study/Android Studio 2021. 2. 11. 18:51 Posted by meanoflife
반응형

Activity 호출하기

 

Activity를 호출하는 방법에는 2가지 방법이 있습니다.

단방향으로 호출하는 방식과 결과를 반환하는 방식입니다.

  - startActivity( intent );

  - startActivityForResult( intent, {호출번호} );

 

Ex.1) 버튼 클릭시, startActivity()를 이용한 SubActivity.class 호출

button1.setOnClickListener( new Button.OnClickListener() {
    @Override
    public void onClick( View v ) {
        Intent intent = new Intent( getApplicationContext(), SubActivity.class );
        startActivity( intent );
    }
} );

  - new Intent( {context}, {호출할 Activity} );  // 호출할 Activity 선언

  - startActivity( intent );  // 실제 호출하는 함수

 

Ex.2) 버튼 클릭시, startActivityForResult()를 이용한 SubActivity.class 호출

button1.setOnClickListener( new Button.OnClickListener() {
    @Override
    public void onClick( View v ) {
        Intent intent = new Intent( getApplicationContext(), SubActivity.class );
        startActivityForResult( intent, 1000 );
    }
} );

  - startActivityForResult( intent, {호출번호} );

 

두가지 방식 모두 사용방법은 유사합니다.

startActivityForResult() 메소드는 결과값을 onActivityResult() 메소드로 반환받을 수 있습니다.

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

    if( requestCode == 1000 && resultCode == RESULT_OK ) {
        // 반환된 값을 처리
        // data.getIntExtra(); 메소드로 값을 가져올 수 있다.
    }
}

  - requestCode : startActivityForResult()로 호출시 넘겨줬던 2번째 인자값.( 호출번호 )

  - resultCode : 결과코드( 성공/실패 등 )

  - data : 반환된 데이터

 

호출된 화면에서 결과를 반환하기 위해 처리하는 부분은 다음과 같습니다.

Intent intent = new Intent();

intent.putExtra( "CUR_HP", iUserCurHP );
setResult( RESULT_OK, intent );

finish();

  - intent.putExtra() 메소드를 이용하여, 반환될 값을 key-value로 세팅

  - setResult( {resultCode}, intent ) : 결과코드 세팅

 

 

호출시 파라미터 전달

 

Activity를 호출할 때 전달해야 할 데이터가 있을 수 있습니다.

이를 세팅하는 방법과 전달 받은 Activity에서 사용하는 방법입니다.

 

1. 전달할 파라미터 세팅

    - Activity를 생성할 때 사용한 Intent객체에 key-value로 값을 세팅하여 전달할 수 있습니다.

    - Intent.putExtra( key, value ) 함수를 사용합니다.

Intent intent = new Intent( getApplicationContext(), InfoActivity.class );

intent.putExtra( "OBJ_ID", txtObjId.getText() );

context.startActivity( intent );

  - 호출할 Activity( InfoActivity.class )를 선언합니다.

  - 파리미터를 "OBJ_ID"라는 key로, TextView객체인 txtObjId의 값을 getText()하여 전달합니다.

  - startActivity()로 선언된 Activity( InfoActivity.class )를 호출합니다.

 

2. 전달받은 파라미터 사용

    - 호출한 Activity에서 Intent객체에 세팅하여 전달된 파라미터 값을 가져옵니다.

    - Intent.getExtra( key ) 함수를 사용합니다.

if( intent.getExtras() != null ) {
    if( intent.getExtras().containkey( "OBJ_ID" ) ) {
        String strObjId = intent.getExtras().get( "OBJ_ID" ).toString();
    }
}

  - 파라미터 정보( Extras )가 없을 수 있으므로, null 체크를 합니다.

  - 파라미터 정보는 있으나, 가져올 Key값이 없을 수 있으므로 null체크를 하였습니다.

  - Intent객체에 포함된 값을 intent.getExtras().get( key )로 가져와서 String 변수에 넣었습니다.

 

The End.

 

반응형

'Study > Android Studio' 카테고리의 다른 글

[Android] 문자열로 Resource 접근하기  (0) 2021.02.13
[Android] ImageView  (0) 2021.02.12
[Andorid] ProgressBar 사용하기  (0) 2021.02.11
[Android] 인트로 화면 만들기  (0) 2021.02.08
[Android] ConstraintLayout  (0) 2021.02.07