MainActivity만 쓰다가 다른 Activity를 추가해 새 화면을 사용하고자 했다.

추가할 Activity의 구조는 처음에 생성되는 MainActivity를 보고 class명을 변경해서 눈치껏 변경했는데 다른 파일들도 수정하거나 추가해야 했다.

기본서와 구글링을 통해 얻은 정보를 추려서 정리하고자 한다.

(p.s. 이해를 돕는 image는 추후에 등록하겠습니다.)


1. 'AndroidManifest.xml'에 추가하고자 하는 sub-Activity를 등록한다.

<manifest ....>

<application android:name=".MyApplication" ...>

<activity android:name=".MainActivity" ...></activity>

<activity android:name=".AddActivity" ...></activity> // 미리 Activity에 해당하는 class을 생성해 놓으면 자동완성이 되어서 편했다.

</application>

</manifest>


2. 생성하고자 하는 추가 Activity class를 생성한다.

2-1) 위 1.과 같은 경우 Java->'생성한 App' folder를 선택한 후

     마우스 오른쪽 버튼을 통해 New -> Java Class에서 AddActivity 라는 이름으로 등록하면 자동으로 activity class가 생성된다.

2-2) 생성된 class 명 옆에 'extends Activity'와 내부에 'onCreate' method를 추가한다.

public class AddActivity extends Activity {


// 필요한 부분 추가


@Override

public void onCreate(Bundle savedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_addActivity); // 사실 지금 당장은 이 부분에서 error가 날 것이다. activity_addActivity.xml 파일을 추가해 줘야 한다.


// 필요한 부분 추가

}

}

2-3) 위 class에서 사용할 activity_addActivity.xml 파일을 layout folder(activity_main.xml이 있는 위치와 동일)에 생성해 준다.


3. 본래 사용하던 Activity로 돌아와 Intent를 선언해 준다.

public void MainActivity extends Activity {


// 생략


@Override

public void onCreate(Bundle savedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);


// 생략


Intent intent = new Intent(); // intent의 선언
ComponentName name = new ComponentName("package 명 입력", "package명.AddActivity");
intent.setComponent(name); // intent에 component를 등록
startActivity(intent); // 해당 intent 시작. 위에 등록한 AddActivity가 실행됨

}

}


4. 추가한 Activity에서 다시 MainActivity와 같은 본래 Activity로 돌아올 수 있도록 'finish();'를 추가한다.

public class AddActivity extends Activity {


// 필요한 부분 추가


@Override

public void onCreate(Bundle savedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_addActivity); // 사실 지금 당장은 이 부분에서 error가 날 것이다. activity_addActivity.xml 파일을 추가해 줘야 한다.


// 필요한 부분 추가


finish(); // 편의에 따라서 보통 Button등을 통해 해당 button을 누를 경우 돌아가도록 등록하기도 한다.

}

}

+ Recent posts