Android

Android] Intent

김코식 2022. 1. 24. 13:41

인텐트 - 4대 컴포넌트간의 작업 수행을 위한 정보 전달 역할

         ㄴ 기본 구성 요소  = Action, Data  

                                    ex)Intent intent = new Intent(Intent.ACTOIN_VIEW,Uri.parse(" ~ ")

                                    Action = ACTOIN_VIEW

                                    Data = URi,pase(" ~ ")

ㄴ  1. 명시적 인텐트 - 인텐트에 클랙스 객체나 컴포넌트 이름 지정하여 호출될 대상을 확실히 알 경우 

 

     2. 암시적 인텐트 - 호출될 대상의 속성을 지정했지만 호출 대상이 달라질 수 있는 경우

 

 

 

*1. 명시적 인텐트

package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button button = (Button) findViewById(R.id.btn);
        button.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                Intent intent = new Intent(getApplicationContext(), SubActivity.class);
                startActivity(intent);
            }
        });
    }
}

MainActivity에서 버튼을 클릭 했을 때 SubActivity로 화면 전환하는 코드

 

1) startActivity

Intent intent = new Intent(getApplicationContext(), SubActivity.class);
startActivity(intent);

이 부분은 새로운 인텐트 객체를 생성하면서 getApplicationContext()와 SubActivity.class를 파라미터로 넘김

getApplicationContext()는 현재 액티비티의 정보가 담겨있는곳

SubActivity.class는 호출할 컴포넌트

startActivity(intent)는 새로 열 액티비티로 부터 받는 응답을 처리할 필요가 없을 때 간단하게 사용

 

2) startActivityForResult

Intent intent2 = new Intent(getApplicationContext(), SubActivity.class); 
startActivityForResult(intent2, 1);

startActivityForResult(intent2,1) 은 intent 이외에도 requestCode또한 넘김

*requestCode - (새로 연 액티비티 중 어떤 액티비티에서 온 것인지 구분하기 위해 사용)

 

onActivityResult를 사용하여 응답 처리

startActivityForResult 는 새로 연 액티비티로 부터 받는 응답을 처리할 필요가 있을 때 사용

 

*2 암시적 인텐트

 

Intent intent1 = new Intent(Intent.ACTION_VIEW, Uri.parse("Http://m.naver.com"));
startActivity(intent1);

naver 창을 호출하여 보여주는 코드로

 

인텐의 액션과 데이터를 지정은 했지만, 호출할 대상이 달라질 수 있기 때문에 암시적 인텐트 사용

ex) pdf파일을 열기 위해 pdf 파일을 열 수 있는 위젯들을 선택하는 창