본문 바로가기

안드로이드

Intent란

반응형

무언가 작업을 수행하기 위해 사용되는 일종의 명령 또는 데이터를 전달하는데 사용 

 

 

 

인텐트 구성요소 :액션(수행할기능)과 데이터 (대상의 데이터)

 

 

다른앱구성요소에 인텐트를 전달할수 있는 대표적인 메서드 

-startActivity()또는 startActivityForressult() //액티비티띄울때 

-startService()또는 bindService()//서비스 시작할때 

-broadcastIntent()//인텐트객체를 브로드캐스팅 방식으로 전송할때 

 

 

 

<androidmanififest.xml>

 

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.sampleintent">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.SampleIntent">
        <activity android:name=".MenuActivity"
                  android:label="메뉴액티비티"
               android:theme="@style/Theme.AppCompat.Dialog">
        </activity>
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

<menuActivity.java>

 

package com.example.sampleintent;

import androidx.appcompat.app.AppCompatActivity;

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

public class MenuActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_menu);

        Button button=findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent =new Intent();
                intent.putExtra("name","mike"); //인텐트객체생성하고 name의 값을 부가데이터로 넣기
                setResult(RESULT_OK,intent); //응답보내기
                finish(); //현재 액티비티 없애기
            }
        });


    }
}

 

 

<MainActivity.java>

package com.example.sampleintent;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    public static final int REQUEST_CODE_MENU=101; //새 액티비티를 띄울때 보낼 요청코드

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

        Button button =findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent= new Intent(getApplicationContext(),MenuActivity.class); //이곳에 menu activity를 띄우겟다
                startActivityForResult(intent,REQUEST_CODE_MENU); //해당 액티비티에 요청코드 보내기
            }
        });
    }

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

        if(requestCode==REQUEST_CODE_MENU) { //메뉴티비티에 요청한 코드번호
            Toast.makeText(getApplicationContext(), "요청코드" +resultCode, Toast.LENGTH_LONG).show();

            if (resultCode == RESULT_OK) { //메뉴엑티비티에서 받은 코드번호
                String name = data.getStringExtra("name"); //키값: 전달받은 데이터
                Toast.makeText(getApplicationContext(), "응답을 전달된 name" + name, Toast.LENGTH_LONG).show();
            }
        }
    }
}

 

 

반응형