1. 인텐트(Intent)
1) 각각의 화면은 별도의 액티비티로 구현됨
2) 하나의 액티비티(화면)에서 다른 액티비티(화면)로 전환하려면 어떻게 하여야 하는가?
-> 인텐트를 사용해야 함
3) 다른 액티비티를 시작하려면 액티비티의 실행에 필요 여러가지 정보들을 보내주어야 함
- 정보를 인턴트에 실어서 보냄
4) 안드로이드 4대 컴포넌트가 상호 간에 데이터를 주고 받기 위한 메시지 객체
5) 인텐트의 종류
- 명시적 인텐트 (explicit intent)
- "application A의 컴포넌트 B를 구동시켜라"와 같이 명확하게 지정
- 암시적 인텐트 (implicit intent)
- "지도를 보여줄 수 있는 컴포넌트이면 어떤 것이라도 좋다"
2. 명시적 인텐트
1) 다른 액티비티의 이름을 명확히 지정할 때 사용하는 방법
2) 명시적 인텐트와 데이터의 전달
- 메인 액티비티에서 인텐트에 데이터를 실어서 넘긴 후, 세컨드 액티비티에서 받은 데이터 처리하는 방식(한쪽 방향)
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="kr.co.myactivity">
<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.MyActivity">
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".SecondActivity"
android:label="Second 액티비티"/>
<activity
android:name=".ThirdActivity"
android:label="Third 액티비티"/>
</application>
</manifest>
<MainActivity>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<RadioGroup
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/radioGroup">
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/rdoSecond"
android:checked="true"
android:text="Second Activity"/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/rdoThird"
android:text="Third Activity"/>
</RadioGroup>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/btnNewActivity"
android:text="새 화면 열기"/>
</LinearLayout>
package kr.co.myactivity;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.RadioButton;
/*
다음과 같이 수정하시오.
1. ThirdActivity를 추가하시오.
2. 라디오 버튼으로 선택된 액티비티가 나오게 하시오.
*/
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setIcon(R.drawable.ic_launcher);
setTitle("메인 액티비티");
final RadioButton rdoSecond = findViewById(R.id.rdoSecond);
Button btnNewActivity = findViewById(R.id.btnNewActivity);
btnNewActivity.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent;
if(rdoSecond.isChecked() == true){
intent = new Intent(getApplicationContext(), SecondActivity.class);
}else{
intent = new Intent(getApplicationContext(), ThirdActivity.class);
}
startActivity(intent);
}
});
}
}
<SecondActivity>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#00FF00">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/btnReturn"
android:text="돌아가기"/>
</LinearLayout>
package kr.co.myactivity;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import androidx.annotation.Nullable;
public class SecondActivity extends Activity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second);
setTitle("Second 액티비티");
Button btnReturn = findViewById(R.id.btnReturn);
btnReturn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
finish();
}
});
}
}
[결과 출력]
- Second Activity 체크 후, '새 화면 열기' 클릭 시 Second Activity 화면으로 이동
<ThirdActivity>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:background="#ff00ff"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/btnReturn"
android:text="돌아가기"/>
</LinearLayout>
package kr.co.myactivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
public class ThirdActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.third);
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setIcon(R.drawable.ic_launcher);
setTitle("메인 액티비티");
Button btnReturn = findViewById(R.id.btnReturn);
btnReturn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
finish();
}
});
}
}
[결과 출력]
- Third Activity 체크 후, '새 화면 열기' 클릭 시 Third Activity 화면으로 이동
'App > Android Java' 카테고리의 다른 글
Android_Java(19) - MyIntent(2) (0) | 2022.02.11 |
---|---|
Android_Java(18) - MyIntent (0) | 2022.02.10 |
Android_Java(16) - MyActivity (0) | 2022.02.10 |
Android_Java(15) - FileExternalApp (0) | 2022.02.10 |
Android_Java(14) - FileApp (0) | 2022.02.09 |
댓글