안드로이드 스튜디오
- 화면 전환하기 (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의 명령, 즉 화면전환을 시작하라 이런 의미가 되겠다.
어찌보면 화면전환하는 것 또한 어플 기능 중 기본이 되는 내용이다.
하지만 그만큼 많이 쓰이기 때문에 중요한 내용이 아닐 수 없다.
'안드로이드 스튜디오' 카테고리의 다른 글
#6 내비게이션 메뉴 (Navigation Menu) 의 구성, 틀 (0) | 2019.02.12 |
---|---|
#5 리스트뷰 (ListView) (0) | 2019.02.12 |
#4 이미지뷰 (ImageView) & 토스트(Toast) (0) | 2019.02.11 |
#2 버튼 & EditText (0) | 2019.02.11 |
#1 TextView & LinearLayout (0) | 2019.02.10 |