본문 바로가기
App/Android Java

Android_Java(17) - MyActivity(2)

by SeleniumBindingProtein 2022. 2. 10.
728x90
반응형

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 화면으로 이동

01


<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 화면으로 이동

01

728x90
반응형

'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

댓글