툴바에 뒤로 화살표 표시


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

당신이 사용하는 경우 DrawerLayout 와 ActionBarDrawerToggle을 다음 보여 뒤로 대신 버튼 메뉴 , 당신이 당신의 활동에이 코드를 추가 할 필요가 버튼 (및 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.