툴바에 뒤로 화살표 표시


496

응용 프로그램 에서에서 ActionBar로 마이그레이션 중입니다 Toolbar. 그러나 내가 Toolbar했던 것처럼 뒤로 화살표에 클릭 이벤트를 표시하고 설정하는 방법을 모르겠습니다 Actionbar.

여기에 이미지 설명을 입력하십시오

ActionBar전화 mActionbar.setDisplayHomeAsUpEnabled(true)합니다. 그러나 이와 비슷한 방법은 없습니다.

누구 든지이 상황에 직면하여 어떻게 든 해결할 수있는 방법을 찾았습니까?



여기서 getSupportActionBar () 예제를 사용하십시오. freakyjolly.com/how-to-add-back-arrow-in-android-activity
Code Spy

답변:


900

를 사용하는 경우 ActionBarActivityAndroid에 Toolbar다음 ActionBar과 같이 사용하도록 지시 할 수 있습니다 .

Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar);
setSupportActionBar(toolbar);

그런 다음

getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);

작동합니다. 또한 첨부 된 조각에서 ActionBarActivities이것을 사용할 수 있습니다 :

((ActionBarActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);
((ActionBarActivity) getActivity()).getSupportActionBar().setDisplayShowHomeEnabled(true);

사용하지 ActionBarActivities않거나 뒤로 화살표를 Toolbar설정하지 않은 SupportActionBar경우 다음을 사용할 수 있습니다.

mActionBar.setNavigationIcon(getResources().getDrawable(R.drawable.ic_action_back));
mActionBar.setNavigationOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View v) {
       //What to do on back clicked
   }
});

를 사용하는 경우 android.support.v7.widget.Toolbar다음 코드를 추가해야합니다 AppCompatActivity.

@Override
public boolean onSupportNavigateUp() {
    onBackPressed();
    return true;
}

12

70
최신 버전의 appcompat-v7 (21.0.3 이상)을 사용하는 경우 지원 라이브러리에 포함 된 뒤로 화살표 드로어 블에 R.drawable.abc_ic_ab_back_mtrl_am_alpha를 사용할 수 있습니다.
Kim Taeho 2019

23
getResources (). getDrawable (...)은 더 이상 사용되지 않습니다. 대신 ContextCompat.getDrawable (context, ...)을 사용해야합니다.
Quentin S.

7
일하지 R.drawable.abc_ic_ab_back_mtrl_am_alpha않았 으며 둘 다 찾을 수 없습니다 R.drawable.ic_action_back.
Henrique de Sousa

10
지원 라이브러리에서 "뒤로"아이콘을 얻는 방법 toolbar.setNavigationIcon(android.support.v7.appcompat.R.drawable.abc_ic_ab_back_material);
Bolein95

215

나는 많은 답변을 보았지만 여기에 언급되지 않은 것이 있습니다. API 8 이상에서 작동합니다.

public class DetailActivity extends AppCompatActivity

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_detail);

    // toolbar
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    // add back arrow to toolbar
    if (getSupportActionBar() != null){
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setDisplayShowHomeEnabled(true);
    }
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // handle arrow click here
    if (item.getItemId() == android.R.id.home) {
        finish(); // close this activity and return to preview activity (if there is any)
    }

    return super.onOptionsItemSelected(item);
}

3
툴바를 ActionBar로 설정 한 경우에만 작동합니다. 독립형 툴바 용이 아닙니다.
커프스

20
onOptionItemSelected()이것에 대한 공감 MrEngineer13이 그의 답변에서 다루지 않은 것을 완성합니다.
Atul

2
고마워 이것은 나를 위해 일했다. 클릭 리스너를 사용하는 것보다 낫습니다. 실제로 독립형 툴바는 신경 쓰지 않습니다.
Mike76

화살표의 색을 어떻게 바꿀 수 있습니까?
Dmitry

"툴바"주석 줄 아래에 줄이 필요하지 않았습니다.
Hack06

173

그것을 달성하는 많은 방법이 있습니다. 여기 내가 가장 좋아하는 것이 있습니다 :

나열한 것:

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    app:navigationIcon="?attr/homeAsUpIndicator" />

활동:

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);

    toolbar.setNavigationOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // back button pressed
        }
    });

13
주제 속성을 사용하는
것이이

3
대신 'onOptionsItemSelected ()`를 setNavigationOnClickListener()추가 할 수 있습니다 case android.R.id.home:.
eugene

1
case android.R.id.home나를 위해 일하지 않았다. 그래서 잠시 동안 검색 한 후, 당신의 대답은 트릭을했습니다. 감사합니다.
deejay

이것은 안드로이드 시스템의 기본 뒤로 아이콘을 사용하려는 경우에 가장 확실한 솔루션입니다.
Nauman Aslam

toolbar.setNavigationOnClickListener 사용하기 {onBackPressed ()}
filthy_wizard 2018 년

74

툴바 setNavigationIcon 메소드를 사용할 수 있습니다. 안드로이드 닥

mToolBar.setNavigationIcon(R.drawable.abc_ic_ab_back_mtrl_am_alpha);

mToolBar.setNavigationOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        handleOnBackPress();
    }
});

1
답변에 설명을 추가해 주시겠습니까? 코드 전용 답변은 SO에 뿌려집니다.
울려

1
방법 setNavigationOnClickListener()은 API 레벨 21 이상에 추가되었습니다
Ali Mehrpour

3
R.drawable.abc_ic_ab_back_mtrl_am_alpha는 이제 23.2.0을 지원하지 않습니다. 대신 수락 된 답변을 사용하십시오.
Milan

25

사용자 정의를 작성하지 않으려면 Toolbar다음과 같이하십시오.

public class GalleryActivity extends AppCompatActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        ...  
        getSupportActionBar().setTitle("Select Image");
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setDisplayShowHomeEnabled(true);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if (item.getItemId() == android.R.id.home) {
            finish();
        }
        return super.onOptionsItemSelected(item);
    }
}                     

당신 안에 AndroidManifest.xml

<activity
    android:name=".GalleryActivity"
    android:theme="@style/Theme.AppCompat.Light">        
</activity>

당신은이를 넣을 수 있습니다 android:theme="@style/Theme.AppCompat.Light"<aplication>모든 활동에 적용을 위해, 태그

여기에 이미지 설명을 입력하십시오


2
감사합니다if (item.getItemId() == android.R.id.home)
Adizbek Ergashev

22
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    toolbar.setNavigationIcon(R.drawable.back_arrow); // your drawable
    toolbar.setNavigationOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            onBackPressed(); // Implemented by activity
        }
    });

API 21 이상 android:navigationIcon

<android.support.v7.widget.Toolbar
    android:navigationIcon="@drawable/back_arrow"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"/>

허용되는 답변이어야합니다.
Anton Malyshev

17

Google 개발자 문서 에서이 방법을 사용했습니다 .

@Override
public void onCreate(Bundle savedInstanceState) {
  ...
  getActionBar().setDisplayHomeAsUpEnabled(true);
}

널 포인터 예외가 발생하면 테마에 따라 달라질 수 있습니다. 매니페스트에서 다른 테마를 사용해 보거나 대신 사용하십시오.

@Override
public void onCreate(Bundle savedInstanceState) {
  ...
  getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}

그런 다음 매니페스트에서 현재 활동에 대한 부모 활동을 설정합니다.

<activity
        android:name="com.example.myapp.MyCurrentActivity"
        android:label="@string/title_activity_display_message"
     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.myapp.MyMainActivity" />
</activity>

나는 이것이 당신을 도울 수 있기를 바랍니다!


1
Google 문서 링크와 getSupportActionBar()작동했습니다. 감사!
Rick

15

당신이 경우 사용 AppCompatActivity하고 자동하지 싶었 기 때문에, 사용하지 않을의 경로 아래로 갔다 ActionBar가 제공하는 당신이 밖으로 분리를 원하기 때문에, Toolbar때문에 당신의 재료 설계 요구 사항과의 CoordinatorLayout또는AppBarLayout , 다음, 이것을 고려 :

당신은 여전히을 사용할 수 있으며 AppCompatActivity, <android.support.v7.widget.Toolbar>XML에서을 사용할 수 있도록 사용을 중단 할 필요는 없습니다 . 액션 바 스타일을 끄십시오.다음과 같이 을 .

먼저, 당신은 당신처럼하는 NoActionBar 테마 중 하나에서 스타일을 도출 styles.xml, 내가 사용 Theme.AppCompat.Light.NoActionBar과 같이 :

<style name="SuperCoolAppBarActivity" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/primary</item>

    <!-- colorPrimaryDark is used for the status bar -->
    <item name="colorPrimaryDark">@color/primary_dark</item>
    ...
    ...
</style>

앱 매니페스트에서 방금 정의한 자식 스타일 테마를 다음과 같이 선택하십시오.

    <activity
        android:name=".activity.YourSuperCoolActivity"
        android:label="@string/super_cool"
        android:theme="@style/SuperCoolAppBarActivity">
    </activity>

Activity Xml에서 툴바가 다음과 같이 정의 된 경우 :

...
    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        />
...

그런 다음이 부분이 중요 합니다. 지원 작업 표시 줄을 확장중인 AppCompatActivity로 설정 하면 XML의 도구 모음 작업 표시 줄이됩니다. 사용자 지정 클릭 핸들러 등을 추가하지 않고도 메뉴, 자동 활동 제목, 항목 선택 처리 등과 같이 ActionBar가 허용하는 많은 작업을 간단하게 수행 할 수 있기 때문에 이것이 더 좋은 방법이라고 생각합니다.

활동의 onCreate 재정의에서 다음을 수행하십시오.

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_super_cool);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);

    setSupportActionBar(toolbar);
    //Your toolbar is now an action bar and you can use it like you always do, for example:
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
} 

8
MyActivity extends AppCompatActivity {

    private Toolbar toolbar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        ...
        toolbar = (Toolbar) findViewById(R.id.my_toolbar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        toolbar.setNavigationOnClickListener(arrow -> onBackPressed());
    }

retrolambda를 사용할 수 있습니다.
Artemiy

이것이 내가 가지고 있고 작동하지 않는 것입니다. 알아낼 수 없습니다.
filthy_wizard

7

툴바에 간단하고 쉬운 뒤로 버튼 표시

이 코드를 onCreate 메소드에 붙여 넣기

 if (getSupportActionBar() != null){

            getSupportActionBar().setDisplayHomeAsUpEnabled(true);
            getSupportActionBar().setDisplayShowHomeEnabled(true);
        }

이 재정의 메소드를 onCreate 메소드 외부에 붙여 넣기

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if(item.getItemId()== android.R.id.home) {

        finish();
    }
    return super.onOptionsItemSelected(item);
}

7

코 틀린에서는

private fun setupToolbar(){
    toolbar.title = getString(R.string.YOUR_TITLE)
    setSupportActionBar(toolbar)
    supportActionBar?.setDisplayHomeAsUpEnabled(true)
    supportActionBar?.setDisplayShowHomeEnabled(true)
}

// don't forget click listener for back button
override fun onSupportNavigateUp(): Boolean {
    onBackPressed()
    return true
}


5

에서 AppCompatActivity예를 들어, 당신은 할 수

public class GrandStatActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_grand_stat);
    }

    @Override
    public void onResume() {
        super.onResume();

        // Display custom title
        ActionBar actionBar = this.getSupportActionBar();
        actionBar.setTitle(R.string.fragment_title_grandstats);

        // Display the back arrow
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setDisplayShowHomeEnabled(true);
    }

    // Back arrow click event to go to the parent Activity
    @Override
    public boolean onSupportNavigateUp() {
        onBackPressed();
        return true;
    }

}

4

뒤로 버튼을 추가하려는 활동의 매니페스트 파일에서 android : parentActivityName 속성을 사용합니다 .

        <activity
        android:name=".WebActivity"
        android:screenOrientation="portrait"
        android:parentActivityName=".MainActivity"
        />

PS 이 속성은 API 레벨 16에서 도입되었습니다.


3

이것은 완벽하게 작동했습니다

public class BackButton extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.chat_box);
        Toolbar chatbox_toolbar=(Toolbar)findViewById(R.id.chat_box_toolbar);
        chatbox_toolbar.setTitle("Demo Back Button");
        chatbox_toolbar.setTitleTextColor(getResources().getColor(R.color.white));
        setSupportActionBar(chatbox_toolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setDisplayShowHomeEnabled(true);
        chatbox_toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                //Define Back Button Function
            }
        });
    }
}

3

먼저 툴바를 초기화해야합니다 :

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

그런 다음 작업 표시 줄에서 뒤로 버튼을 호출하십시오.

getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);

@Override
public boolean onSupportNavigateUp() {
    onBackPressed();
    return true;
}

2

SupportActionBar로 설정되지 않은 툴바에 뒤로 화살표를 표시하려면 다음을 수행하십시오.

(코트 린)

val resId = getResIdFromAttribute(toolbar.context, android.R.attr.homeAsUpIndicator)
toolbarFilter.navigationIcon = ContextCompat.getDrawable(toolbar.context, resId)
toolbarFilter.setNavigationOnClickListener { fragmentManager?.popBackStack() }

속성에서 입술을 얻으려면 :

@AnyRes
fun getResIdFromAttribute(context: Context, @AttrRes attr: Int): Int {
    if (attr == 0) return 0
    val typedValueAttr = TypedValue()
    context.theme.resolveAttribute(attr, typedValueAttr, true)
    return typedValueAttr.resourceId
}

1

이것을 레이아웃 폴더의 액티비티 xml에 추가하십시오.

<android.support.design.widget.AppBarLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/AppTheme.AppBarOverlay">
    <android.support.v7.widget.Toolbar
        android:id="@+id/prod_toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        app:popupTheme="@style/AppTheme.PopupOverlay" />
</android.support.design.widget.AppBarLayout>

툴바를 클릭 가능하게 만들고 onCreate 메소드에 다음을 추가하십시오.

Toolbar toolbar = (Toolbar) findViewById(R.id.prod_toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        finish();
    }
});

1

툴바를 작업 표시 줄로 사용하지 않는 경우 테마에서 위로 아이콘을 가져 오는보다 안정적인 방법 일 수 있습니다.

toolbar.navigationIcon = context.getDrawableFromAttribute(R.attr.homeAsUpIndicator)

테마 속성을 드로어 블로 변환하기 위해 확장 기능을 사용했습니다.

fun Context.getDrawableFromAttribute(attributeId: Int): Drawable {
    val typedValue = TypedValue().also { theme.resolveAttribute(attributeId, it, true) }
    return resources.getDrawable(typedValue.resourceId, theme)
}

0

당신이 사용하는 경우 DrawerLayoutActionBarDrawerToggle을 다음 보여 뒤로 대신 버튼 메뉴 , 당신이 당신의 활동에이 코드를 추가 할 필요가 버튼 (및 viceversa에를)

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // ...

    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, toolbar, R.string.application_name, R.string.application_name);
    mDrawerLayout.addDrawerListener(mDrawerToggle);

    mDrawerToggle.setHomeAsUpIndicator(R.drawable.ic_arrow_back_white_32dp);
    mDrawerToggle.setToolbarNavigationClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            onBackPressed(); // Or you can perform some other action here when Back button is clicked.
        }
    });
    mDrawerToggle.syncState();
    // ...
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (mDrawerToggle.onOptionsItemSelected(item))
        return true;

    switch (item.getItemId()) {
        case android.R.id.home:
            onBackPressed();
            return true;
        // ...
    }

    return super.onOptionsItemSelected(item);
}

public void showBackInToolbar(boolean isBack) {
    // Remove next line if you still want to be able to swipe to show drawer menu.
    mDrawerLayout.setDrawerLockMode(isBack ? DrawerLayout.LOCK_MODE_LOCKED_CLOSED : DrawerLayout.LOCK_MODE_UNLOCKED);
    mDrawerToggle.setDrawerIndicatorEnabled(!isBack);
    mDrawerToggle.syncState();
}

따라서 메뉴 버튼 대신 뒤로 버튼 을 표시해야 할 경우 showBackInToolbar (true)를 호출 하고 메뉴 버튼 이 필요한 경우 showBackInToolbar (false)를 호출 하십시오 .

여기 에서 뒤로 화살표 (ic_arrow_back_white_32dp) 생성 하고 클립 아트 섹션 에서 arrow_back 을 검색 할 수 있습니다 ( 8dp 패딩에서 기본 32dp 사용). 원하는 색상을 선택하십시오.


0

언제든지 a Relative layout또는 a Linear Layout를 추가하고 원하는대로 Toolbar뒤로 아이콘 또는 닫기 아이콘의 이미지보기를 툴바의 아무 곳에 나 배치 할 수 있습니다

예를 들어 툴바에서 상대적 레이아웃을 사용했습니다.

 <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar_top"
                android:layout_width="match_parent"
                android:layout_height="35dp"
                android:minHeight="?attr/actionBarSize"
                android:nextFocusDown="@id/netflixVideoGridView"
                app:layout_collapseMode="pin">

                <RelativeLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content">


                    <TextView

                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="Myflix"
                        android:textAllCaps="true"
                        android:textSize="19sp"
                        android:textColor="@color/red"
                        android:textStyle="bold" />


                    <ImageView
                        android:id="@+id/closeMyFlix"
                        android:layout_alignParentRight="true"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center_vertical"
                        app:srcCompat="@drawable/vector_close" />


                </RelativeLayout>

            </android.support.v7.widget.Toolbar>

그리고 다음과 같이 보입니다 :

여기에 이미지 설명을 입력하십시오

해당 이미지보기에서 클릭 리스너를 활동 또는 이와 같은 조각으로 추가 할 수 있습니다.

  closeMyFlix.setOnClickListener({
            Navigator.instance.showFireTV(  activity!!.supportFragmentManager)
        })

0

Kotlin은 다음과 같이되었습니다.

Xml :

<include
android:id="@+id/tbSignToolbar "
layout="@layout/toolbar_sign_up_in"/>

당신의 활동에서 :-

setSupportActionBar(tbSignToolbar as Toolbar?)//tbSignToolbar :id of your toolbar 
supportActionBar?.setDisplayHomeAsUpEnabled(true)
supportActionBar?.setDisplayShowHomeEnabled(true)

0

JetPack Navigation을 사용하는 경우

MainActivity의 레이아웃은 다음과 같습니다.

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
                                               xmlns:app="http://schemas.android.com/apk/res-auto"
                                               xmlns:tools="http://schemas.android.com/tools"
                                               android:layout_width="match_parent"
                                               android:layout_height="match_parent"
                                               tools:context=".MainActivity">

<androidx.appcompat.widget.Toolbar
        android:id="@+id/toolBar"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

</androidx.appcompat.widget.Toolbar>

<fragment
        android:id="@+id/my_nav_host_fragment"
        android:name="androidx.navigation.fragment.NavHostFragment"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        app:defaultNavHost="true"
        app:layout_constraintTop_toBottomOf="@id/toolBar"
        app:layout_constraintBottom_toTopOf="parent"
        app:navGraph="@navigation/nav_graph"/>

Activity 클래스의 onCreate ()에서 아래와 같이 활동에 툴바를 설정하십시오.

val navHostFragment = supportFragmentManager
        .findFragmentById(R.id.my_nav_host_fragment) as NavHostFragment? ?: return

val navController = navHostFragment.findNavController()
val toolBar = findViewById<Toolbar>(R.id.toolBar)
setSupportActionBar(toolBar) // To set toolBar as ActionBar
setupActionBarWithNavController(navController)

setupActionBarWithNavController (navController) 필요한 경우 툴바에 뒤로 버튼을 만들고 backButton 기능을 처리합니다. CustomBack 기능을 작성해야하는 경우 단편 onCreate () 메소드에서 아래와 같이 콜백을 작성하십시오.

val callback = requireActivity().onBackPressedDispatcher.addCallback(this) {
        // Handle the back button event
    }

설명서에서 : https://developer.android.com/guide/navigation/navigation-custom-back


0

당신이 androidx.appcompat.app.AppCompatActivity그냥 사용하는 경우 :

Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);

그런 다음 Manifest.xml부모 활동 에서 정의하십시오 .

<activity
    android:name=".MyActivity"
    ...>
  <meta-data
      android:name="android.support.PARENT_ACTIVITY"
      android:value=".ParentActivity" />
</activity>

대신 a를 사용 Toolbar하고 있고 사용자 지정 동작을 원하면 다음을 사용하십시오.

<androidx.appcompat.widget.Toolbar
    android:id="@+id/toolbar" 
    app:navigationIcon="?attr/homeAsUpIndicator"
    .../>

그리고 당신의 활동에서 :

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        //....
    }
});
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.