앱에서 사용자는 기본 화면으로 돌아가는 방법을 쉽게 찾을 수 있어야 합니다. 이렇게 만들려면 기본 활동을 제외한 모든 활동에서 앱바에 위로 버튼을 제공하는 간단한 방법이 있습니다. 사용자가 위로 버튼을 선택하면 앱이 상위 활동으로 이동합니다.
이 강의에서는 매니페스트에서 활동의 상위 활동을 선언하고 앱 바의 위로 버튼을 사용 설정하여 활동에 위로 버튼을 추가하는 방법을 보여줍니다.
앱에서 탐색을 처리하는 또 다른 방법으로, 탐색 아키텍처 구성요소(현재 알파 버전임)가 있습니다. 사용자가 위로 버튼을 클릭하면 API가 앱의 현재 화면에서 상위 활동으로 이동하는 탐색을 처리할 수 있습니다. 자세한 내용은 탐색 아키텍처 구성요소를 참조하세요.
상위 활동 선언하기
활동의 위로 기능을 지원하려면 상위 활동을 선언해야 합니다. 이렇게 하려면 앱 매니페스트에서 android:parentActivityName
속성을 설정하면 됩니다.
android:parentActivityName
속성은 Android 4.1(API 수준 16)에 도입되었습니다. 이전 버전의 Android를 실행하는 기기를 지원하려면 <meta-data>
이름-값 쌍을 정의합니다. 여기서 이름은 "android.support.PARENT_ACTIVITY"
이고 값은 상위 활동의 이름입니다.
예를 들어 앱에 MainActivity
라는 기본 활동과 단일 하위 활동이 있다고 가정해 보겠습니다. 다음 매니페스트 코드는 두 활동을 모두 선언하고 상위/하위 관계를 지정합니다.
<application ... > ... <!-- The main/home activity (it has no parent activity) --> <activity android:name="com.example.myfirstapp.MainActivity" ...> ... </activity> <!-- A child of the main activity --> <activity android:name="com.example.myfirstapp.MyChildActivity" android:label="@string/title_activity_child" android:parentActivityName="com.example.myfirstapp.MainActivity" > <!-- Parent activity meta-data to support 4.0 and lower --> <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="com.example.myfirstapp.MainActivity" /> </activity> </application>
위로 버튼 사용 설정
상위 활동이 있는 활동에 위로 버튼을 사용 설정하려면 앱 바의 setDisplayHomeAsUpEnabled()
메서드를 호출합니다. 일반적으로 이 과정은 활동을 만들 때 처리합니다. 예를 들어 다음 onCreate()
메서드는 Toolbar
를 MyChildActivity
의 앱 바로 설정한 다음 앱 바의 위로 버튼을 사용 설정합니다.
Kotlin
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_my_child) // my_child_toolbar is defined in the layout file setSupportActionBar(findViewById(R.id.my_child_toolbar)) // Get a support ActionBar corresponding to this toolbar and enable the Up button supportActionBar?.setDisplayHomeAsUpEnabled(true) }
자바
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my_child); // my_child_toolbar is defined in the layout file Toolbar myChildToolbar = (Toolbar) findViewById(R.id.my_child_toolbar); setSupportActionBar(myChildToolbar); // Get a support ActionBar corresponding to this toolbar ActionBar ab = getSupportActionBar(); // Enable the Up button ab.setDisplayHomeAsUpEnabled(true); }
활동의 onOptionsItemSelected()
메서드에서 위로 작업을 포착하지 않아도 됩니다.
대신 작업 관련 응답의 설명대로 이 메서드가 슈퍼클래스를 호출해야 합니다. 위로 버튼이 선택되면 슈퍼클래스 메서드는 앱 매니페스트에 지정된 내용에 따라 상위 활동으로 이동하는 방식으로 응답합니다.