본문 바로가기

안드로이드 스튜디오

#3 화면 전환하기 (Intent)

안드로이드 스튜디오

- 화면 전환하기 (Intent) -



이번에는 Intent에 대하여 배운 내용들을 포스팅해볼 것이다.

보통 어플들을 보면 한 화면만 있는게 아니라

버튼을 누르면 다른 화면으로 이동하여 다른 내용들을 사용자들에게 보여주는 등

다양한 화면들로 구성이 되어있는 것을 볼 수 있는데

이때 다른 화면으로 전환하기 위해 사용되는 기능이 바로 Intent이다.


그럼 간단하게 Intent를 어떻게 사용하는지 알아보자


우선 화면전환을 하기 위해 원래 있던 화면인 activity_main.xml 말고 다른 화면을 만들어줘야 하니

안드로이드 스튜디오 좌측에 보면 패키지 폴더가 있는데

app->res->layout 폴더 안에 들어가면 activity_main.xml 파일이 있는것을 확인할 수 있다.

바로 layout 폴더가 화면파일들이 들어가 있는 폴더인데 이곳에 activity_main.xml파일을 복사 + 붙여넣기해서

이름을 activity_sub.xml로 만들어준다.


그 다음 이 서브화면을 담당할 java파일도 필요하기 떄문에

app->java-> 맨 위에 있는 폴더 안을 보면 MainActivity.java 파일이 있는 것을 볼 수 있다.

java->맨 위 폴더를 우클릭->New->Java Class 클릭 후 원하는 이름으로 자바파일을 만드는데

보기 좋게 나는 SubActivity라는 이름으로 지었다.

그 다음 서브자바파일을 들어가보면 아무것도 쓰여져 있지 않은데

메인자바파일에서 필요한 내용들을 복사 + 붙여넣기 해준다.

//패키지 어쩌구 저쩌구는 기본으로 생성되어 있을것이다.
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;

public class SubActivity extends AppCompatActivity {

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

}
}

여기서 중요한 것은 바로 setContentView(R.layout.activity_sub); 이 부분이다.

메인자바파일과 비교를 해 본다면 setContentView(R.layout.activity_main); 이렇게 되어있는데 눈치챘겠지만

이 자바파일은 activity_sub, activity_main.xml 파일의 내용을 포함하겠다! 이러한 의미이다.

그래서 sub.xml 파일과 sub.java파일을 2개 다 만들어야 하며


그 다음으로 할 것은 만든 activity_sub를 manifest에 등록해야 하는 마지막 단계가 남았다.

app->menifest폴더 안에->AndroidMenifest.xml 파일이 들어가 있는데 그 파일 안을 들어가보면

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.leegm.sharedexample">

<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/AppTheme">
<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>

대충 이렇게 application 칸 안에 여러 코드들이 있고 <activity android:name="MainActivity"> 로 시작하는 activity칸이

있는 것을 알 수 있다. 여기서 MainActivity는 들어 있는데 아직 SubActivity는 등록이 안되어 있다.

SubActivity 등록은 똑같이 해주면 된다.

<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

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

다음과 같이 MainActivity가 닫히는 </ ~ > 칸 아래에

<activity android:name=".SubActivity"/>로 등록을 해줄 수 있겠다.


모든 준비가 끝났으니 본격적으로 Intent를 알아보자


저번 시간에 배웠던 버튼을 이용해볼건데 버튼을 누를 때 화면이 전환되도록 만들어보자

btn_test.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, SubActivity.class);
startActivity(intent);
}
});

간단하게 바로 이렇게 만들 수 있다.

Intent intent = new Intent 로 먼저 Intent형을 선언해 준 다음

Intent(MainActivity.this, SubActivity.class) 이 내용은 바로 Main화면에서 Sub화면으로 이동하라! 이런 의미이다.

눈여겨볼 것은 MainActivity.this 여기서 this라고 되어있는 건 버튼을 눌러 화면전환을 하는데 버튼이 MainActivity에 

있으므로 this로 처리해준 것이다.


그리고 startActivity(intent);는 이 intent의 명령, 즉 화면전환을 시작하라 이런 의미가 되겠다.


어찌보면 화면전환하는 것 또한 어플 기능 중 기본이 되는 내용이다.

하지만 그만큼 많이 쓰이기 때문에 중요한 내용이 아닐 수 없다.