• 안드로이드 스튜디오 버튼 클릭시 다른 Activity로 화면전환

    2021. 1. 3.

    by. 하루플스토리

    반응형

    안녕하세요, 하루플스토리 입니다.

     

    아주 기초적인 부분인데 layout에서 버튼을 추가하고 java 소스코드에 클릭이벤트를 추가하여 다른 Activity로 화면전환 하는 방법을 알려드리겠습니다.

     

    이 과정은 정말 자주쓰기도 하고 유용하니 꼭 익혀두시길 바랍니다.

    외우기 힘들면 소스코드 그대로 사용하셔도 좋습니다. 그래도 정말 중요한 부분!!😁

     


     

    1. 버튼 제작하기

     

    저는 이렇게 닉네임규정과 개발자정보 라는 버튼을 생성해보겠습니다.

     

     

    activity_main.xml

                    <Button
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="닉네임 규정"
                        android:layout_gravity="right"
                        android:layout_margin="20dp"
                        android:id="@+id/name_rule_btn"
                        />
    
    
                    <Button
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="개발자 정보"
                        android:layout_gravity="right"
                        android:layout_margin="20dp"
                        android:id="@+id/developer_info_btn"
                        />

    layout_gravity 는 레이아웃 정렬 입니다. right는 말그대로 오른쪽이고, center, left 등을 지정할 수 있습니다.

    layout_margin은 레이아웃을 다른 레이아웃과 얼마나 띄울지 설정할 수 있습니다. 즉, 레이아웃간 공백을 만들 수 있습니다.

     

    너무 버튼끼리 붙어있으면 하나의 버튼처럼 보이기도 하고 미관상 좋지 않으니까요..ㅎㅎ

     

    android:id="@+id/name_rule_btn" 버튼 아이디는 잠시 후에 JAVA 소스코드에서 가져와서 사용할 이름입니다.

     


     

     

    2. 화면전환할 레이아웃, JAVA 클래스 생성

    layout 오른쪽마우스 - New - Layout Resourse File 로 레이아웃을 생성해 줍니다.

     

    저는 닉네임 규정 버튼과 연결할 name_rule.xml

    개발자정보 버튼과 연결할 developer_info_activity.xml 을 생성하였습니다.

     

     

    마찬가지로 각 xml 레이아웃과 연결할 java클래스도 생성해줘야합니다.

     

    저는 Devloper_info.java 와 Name_rule.java 를 생성하였습니다.

    여러분들은 버튼 하나만 생성하셨다면 xml도 하나 java도 하나만 만들면 됩니다.


     

    3. MainActivity.java 코딩

    메인액티비티를 버튼과 연결해줍시다.

     

    MainAvtivity.java

    package org.justice.maple_name_maker;
    
    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 developer_info_btn = (Button) findViewById(R.id.developer_info_btn);
            developer_info_btn.setOnClickListener(new View.OnClickListener(){
    
                @Override
                public void onClick(View view){
                    Intent intent = new Intent(getApplicationContext(), Developer_info.class);
                    startActivity(intent);
                }
            });
    
    
            //닉네임규정 버튼 클릭시 액티비티 전환
            Button name_rule_btn = (Button) findViewById(R.id.name_rule_btn);
            name_rule_btn.setOnClickListener(new View.OnClickListener(){
    
                @Override
                public void onClick(View view){
                    Intent intent = new Intent(getApplicationContext(), Name_rule.class);
                    startActivity(intent);
                }
            });
        }
    }
    

     

    findViewById 는 레이아웃에서 내 버튼을 찾아오는 부분입니다. 아까 버튼 id를 입력해주면 됩니다.

    아래 Intent로 넘겨주는 부분에서 .class 부분이 넘길 java 이름을 적어주면 됩니다.

     

    이렇게 하면 버튼을 클릭하였을 때 해당 java파일로 넘어가게 됩니다.

    하지만 여기까지 하면 실행이 안됩니다. 넘어간 java에서 xml 레이아웃 파일을 아직 실행하지 않았기 때문이죠.

     


    4. Name_rule.java 코딩 (이동할 java 파일)

    저는 버튼 두개를 생성하였는데 전부 동일한 방법이라 일단 예시로 Name_rule.java 파일만 올리겠습니다.

     

    Name_rule.java

    import android.os.Bundle;
    import androidx.annotation.Nullable;
    import androidx.appcompat.app.AppCompatActivity;
    
    public class Name_rule extends AppCompatActivity {
    
        @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.name_rule);
    
        }
    }
    

    Name_rule 클래스가 실행되면 name_rule.xml 로 이동되는 소스코드 입니다.

    setContentView(R.layout.name_rule); 를 통해 이동하게 됩니다.

     


     

    실행결과

    닉네임 규정 버튼을 클릭하면 이렇게 닉네임규정 화면으로 넘어가게 되었습니다.

     

    사용자 입장에서는 정말 간단한 것이지만 개발자 입장에서는 생각해야할 것이 굉장히 많습니다.

     

    Intent는 정말 초보적인 기능이지만 사용을 많이 하니 꼭 익힙시다!

     

    궁금한점은 댓글로 남겨주세요 답변해드리겠습니다. 감사합니다.

     

    반응형

    댓글