본문 바로가기
모바일 앱 개발/안드로이드

안드로이드 - 화면 간 이동 원리

by 도툐리 2021. 4. 9.

대부분의 어플리케이션은 많은 View를 모으고 모아서 만든 결과물입니다. 

 

안드로이드에서 페이지 전환과 페이지간 데이터 전달은 Intent를 통해서 구현할 수 있습니다.

 

더보기

※ 인텐트란

인텐트는 앱 컴포넌트가 무엇을 할 것인지를 담는 메시지 객체입니다. 메시지를 사용하는 가장 큰 목적은 다른 액티비티, 서비스, 브로드캐스트 리시버, 컨텐트 프로바이더 등을 실행하는 것입니다. 인텐트는 그들 사이에 데이터를 주고 받기 위한 용도로도 쓰입니다. 

 

 

Manifest

<activity android:name=".SubActivity"/> <!--액티비티 추가시 <application> 안에 추가해줘야함-->

 

MainActivity.class

package com.example.user.intent;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

    public static final int sub = 1001; /*다른 액티비티를 띄우기 위한 요청코드(상수)*/

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

        Button button = (Button)findViewById(R.id.sub); /*페이지 전환버튼*/

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(getApplicationContext(),SubActivity.class);
                startActivityForResult(intent,sub);//액티비티 띄우기
            }
        });
        
    }
    
}

 

 

 

 

 

Manifest

<activity android:name=".SubActivity"/> <!--액티비티 추가시 <application> 안에 추가해줘야함-->

 

MainActivity.class

package com.example.user.myintent;

import android.content.ComponentName;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
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 sub = (Button)findViewById(R.id.sub);

        sub.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String[] array = {"홍길순","김춘추","김유신"}; /*송신 할 배열*/
                Option option = new Option("010xxxxxxxx","서울특별시xxxx"); /*송신 할 클래스*/

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

                intent.putExtra("name","홍길동"); /*송신*/
                intent.putExtra("age",20);
                intent.putExtra("array",array);
                intent.putExtra("class",option);

                startActivity(intent);
            }
        });
    }
}

 

SubActivity.class

package com.example.user.myintent;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;

public class SubActivity extends AppCompatActivity {

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

        TextView tx1 = (TextView)findViewById(R.id.textView1); /*TextView선언*/
        TextView tx2 = (TextView)findViewById(R.id.textView2);
        TextView tx3 = (TextView)findViewById(R.id.textView3);
        TextView tx4 = (TextView)findViewById(R.id.textView4);
        TextView tx5 = (TextView)findViewById(R.id.textView5);

        Intent intent = getIntent(); /*데이터 수신*/

        String name = intent.getExtras().getString("name"); /*String형*/
        tx1.setText(name);

        int age = intent.getExtras().getInt("age"); /*int형*/
        tx2.setText(String.valueOf(age));

        String array[] = intent.getExtras().getStringArray("array"); /*배열*/
        String add_array="";
        for(int i=0;i<array.length;i++){
            add_array+=array[i]+",";
        }
        tx3.setText(add_array);

        Option option = (Option)intent.getSerializableExtra("class"); /*클래스*/
        tx4.setText(option.getPhone());
        tx5.setText(option.getAddr());

    }
}


Option.class

package com.example.user.myintent;

import java.io.Serializable;

/**
 * Created by user on 2016-12-22.
 */

public class Option implements Serializable{

    String phone;
    String addr;

    public Option(){

    }
    public Option(String phone, String addr){
        this.phone = phone;
        this.addr = addr;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getAddr() {
        return addr;
    }

    public void setAddr(String addr) {
        this.addr = addr;
    }
}

 

 

 

내용 출처 :

coding-factory.tistory.com/203

댓글