위로 작업 추가

앱에서 사용자는 기본 화면으로 돌아가는 방법을 쉽게 찾을 수 있어야 합니다. 이렇게 만들려면 기본 활동을 제외한 모든 활동에서 앱바에 위로 버튼을 제공하는 간단한 방법이 있습니다. 사용자가 위로 버튼을 선택하면 앱이 상위 활동으로 이동합니다.

이 강의에서는 매니페스트에서 활동의 상위 활동을 선언하고 앱 바의 위로 버튼을 사용 설정하여 활동에 위로 버튼을 추가하는 방법을 보여줍니다.

앱에서 탐색을 처리하는 또 다른 방법으로, 탐색 아키텍처 구성요소(현재 알파 버전임)가 있습니다. 사용자가 위로 버튼을 클릭하면 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() 메서드는 ToolbarMyChildActivity의 앱 바로 설정한 다음 앱 바의 위로 버튼을 사용 설정합니다.

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() 메서드에서 위로 작업을 포착하지 않아도 됩니다. 대신 작업 관련 응답의 설명대로 이 메서드가 슈퍼클래스를 호출해야 합니다. 위로 버튼이 선택되면 슈퍼클래스 메서드는 앱 매니페스트에 지정된 내용에 따라 상위 활동으로 이동하는 방식으로 응답합니다.