우선 검색은 "How to pass data between screens in Android" 정도면 어느정도 검색결과가 나오는 것 같구요.
화면의 레이아웃이 동일하기 때문에 화면을 별개로 만들지 마시고 데이터만 변경하시는게 맞습니다.
검색결과 중 하나만 찾아보셔도 답을 구하실 수 있을 것 같구요, 제일 좋은 소스는 개발자 문서입니다.
간단하게 구현방법을 말씀드리면, 안드로이에는 Activity와 Fragment가 화면을 구성하는데 사용되는 클래스들입니다. 이 클래스들이 XML로 디자인된 레이아웃을 읽어와서 화면에 보여주는 역할을 합니다. 처음에는 Activity만 우선 보시고 익숙해지면 Fragment를 보기 시작하면 됩니다.
간단하게 Activity에 대해서만 언급할게요.
액티비티간에 화면 전환은 Intent라는 걸 사용해서 이루어집니다. Intent가 "의도"정도의 의미인데요.내가 어떤 화면에 어떤 데이터를 가지고 나타나길 원하는지 대한 정보를 담을 클래스라고 보시면 됩니다. 이렇게 하는 이유는 안드로이드 라이프사이클이란게 있는데 생성부터 소멸까지 시스템에서 관리해야 하기 때문에 개발자가 직접 생성하지 않고 시스템에 맡기게 됩니다. 그리고 화면 회전 같은 이벤트같은 경우(Configuration change라고 불립니다) 이 때, 시스템이 액티비티를 죽였다가 다시 생성을 해주게 됩니다. 만약 화면 전환시에 Intent를 이용하지 않고 데이터를 전달할 경우 configuration change가 발생하면 데이터 사라지게 되기 때문에 Intent를 이용해서 액티비티 전환을 해야 합니다.
호출방법은 아래와 같습니다. 호출하는 쪽에서 아래처럼 오픈할 액티비티를 명시하고 데이터를 전달하고 Context.startActivity(Intent)를 호출합니다. this는 Context의 인스턴스입니다. Activity가 Context를 확장한 클래스라 this로 넘길 수 있습니다.
Intent intent = new Intent(this, SecondActivity.class);
itent.putExta("StringKey", "아무문자열");
itent.putExta("IntKey", 1004);
startActivity(intent);
위에서는 String과 int같은 원시타입만 저장했지만, 커스텀 오브젝트, List 같은 클래스도 가능합니다. 다만 커스텀 클래스의 경우는 Serializable이나 Parcelable 인터페이스르 구현해야만 합니다. 이 부분도 개발자 문서를 참고해서 자세하게 공부를 하시길 바랍니다.
https://developer.android.com/reference/android/content/Intent
putExtra의 첫번째 인자는 String 타입의 키캆입니다. 키값은 개발자가 임의로 정의하면 되며, 전달할 때와 값을 읽을 때 같은 키값을 사용하면 됩니다.
값을 읽는 액티비티에서는, 아래처럼 getIntent()메소드를 통해 intent에 접근할 수 있구요, putExtra를 호출핳 때 사용했던 키값을 사용해서 읽어오면 되구요, getStringExtra와 getIntExtra의 두번째 인자는 값이 존재하지 않을 때 사용할 기본값입니다.
String stringValue = getIntent().getStringExtra("StringKey", "");
int intValue = getIntent().getIntExtra("IntKey", 0);
도움이 되시길.