액티비티의 시작
다른 액티비티를 시작하려면 Context.startActivity(Intent) 를 이용하면 됩니다. 파라미터로 Intent라는 것이 필요합니다.
Intent란?
Intent는 컴포넌트간의 런타임 바인딩을 제공하는 객체입니다. Intent는 작업의도를 나타내며 intent객체를 통해 다른 컴포넌트를 실행하고, 메시지를 전달하는 것들이 가능합니다.
먼저 다른 액티비티를 실행하려면 액티비티부터 만들어야겠죠?
프로젝트 구조에서 최상위에서 마우스 우클릭을 하여 빈 액티비티를 생성합니다. 저는 SecondActivity라고 명명 했습니다.
프로젝트를 생성하면 기본적으로 제공되는 MainActivity는 이름을 FirstActivity로 변경했습니다.
성공적으로 액티비티가 생성되었다면 이제 SecondActivity를 실행시킬 차례입니다.
Intent intent = new Intent(FirstActivity.this, SecondActivity.class); startActivity(intent);
기본적으로 인텐트는 기본생성자를 포함한 생성자종류가 6개입니다.
위의 예제에서는 Context와 클래스를 통하여 인텐트를 생성하였습니다. 예) new Intent(context, class);
Intent객체를 생성할때 Activity는 Context를 상속한클래스이므로 첫번째 context타입 파라미터에는 액티비티 자신을 넣고, Class에는 호출하고자 하는 액티비티의 클래스를 넣어줍니다.
그런뒤 startActivity(Intent)를 호출합니다. 그러면 액티비티가 호출되는것을 확인할 수 있습니다.
액티비티의 종료
일반적으로 액티비티는 Activity.finish()의 호출로 종료할 수 있습니다.
종료를 원하는 액티비티에서 finish()를 호출합니다.
public class SecondActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); Button finishBtn = findViewById(R.id.finish); finishBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }); } }
본문의 예제는 github의 011 Activity_startActivity모듈에서 확인가능합니다.
질문은 band.us/@charlezz 또는 댓글로 남겨주시면 답변드리겠습니다.
2개의 댓글
문태승 · 2020년 1월 20일 2:59 오후
안녕하세요 🙂 글 잘 봤습니다 ㅎㅎ
질문이 있는데용
현재 엑티비티에 버튼 하나 만들어서 버튼이 눌리게 되면
액티비티이름.this.finish(); 를 해봤는데 이전으로 갔다가 바로 앱이 종료가 되는데 manifests 도 뭔가 수정을 해야하나요??
그냥 finish(); 도 동일하게 동작합니다….
Charlezz · 2020년 1월 20일 7:04 오후
액티비티내에서 finish() 또는 Activity이름.this.finish()를 호출하시면 해당 액티비티가 종료됩니다.