source

수행 표시줄에 뒤로 단추 표시

nicesource 2023. 9. 6. 22:08
반응형

수행 표시줄에 뒤로 단추 표시

저는 를을 .Back buttonAction bar이전 페이지/활동 또는 메인 페이지(첫번째 열림)로 이동합니다.그리고 난 할 수 없습니다.

내 암호.

ActionBar actionBar = getActionBar();
actionBar.setHomeButtonEnabled(true);

암호가 들어 있습니다onCreate.

이것은 뒤로 버튼을 보여주는 간단한 것입니다.

actionBar.setDisplayHomeAsUpEnabled(true);

그런 다음 옵션에서 백 이벤트를 사용자 지정할 수 있습니다.선택한 항목

case android.R.id.home:
this.finish();
return true;

생각합니다onSupportNavigateUp()를 사용하는 가장 좋은 방법이자 가장 쉬운 방법입니다. 아래 단계를 참조하십시오.1단계가 필요하고, 2단계는 대안이 있습니다.

뒤로 버튼을 표시하는 1단계:이 줄을 에 추가합니다.onCreate()버튼을 다시 보여주는 방법.

assert getSupportActionBar() != null;   //null check
getSupportActionBar().setDisplayHomeAsUpEnabled(true);   //show back button

2단계 백클릭 구현:이 메서드 재정의

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

입니다. 이.
또는 2단계 대안:매니페스트 파일의 활동에 메타를 다음과 같이 추가할 수 있습니다.

<meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value="MainActivity" />

편집: 사용하지 않는 경우AppCompat그러면 활동을 사용하지 않습니다.supportword, 당신은 사용할 수 있습니다.

getActionBar().setDisplayHomeAsUpEnabled(true); // In `OnCreate();`

// And override this method
@Override 
public boolean onNavigateUp() { 
     finish(); 
     return true; 
}

@atariguy 님께 감사드립니다.

은 에서 .onOptionsItemSelected.

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:
            // app icon in action bar clicked; go home
            Intent intent = new Intent(this, HomeActivity.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(intent);
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

공식솔루션

하위 활동에 코드 조각 두 개를 추가합니다.

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

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    // Respond to the action bar's Up/Home button
    case android.R.id.home:
        NavUtils.navigateUpFromSameTask(this);
        return true;
    }
    return super.onOptionsItemSelected(item);
}

meta-data 및 parentActivity를 매니페스트에 추가하여 하위 sdk를 지원합니다.

 <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.SubActivity"
        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.myfirstapp.MainActivity" />
    </activity>
</application>

여기서 참조: http://developer.android.com/training/implementing-navigation/ancestral.html

다음 줄을 만들기()에 추가합니다.)

android.support.v7.app.ActionBar actionBar = getSupportActionBar();
   actionBar.setHomeButtonEnabled(true);
   actionBar.setDisplayHomeAsUpEnabled(true);

및 onOptionItem에선택된

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                //Write your logic here
                this.finish();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }

이것이 당신에게 도움이 되기를 바랍니다..!

이 코드를 사용해 보세요. 뒤로 단추가 필요한 경우에만 사용합니다.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //YOUR CODE
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    //YOUR CODE
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    onBackPressed();
    return true;
}

onCreate메서드 추가:

getSupportActionBar().setDisplayHomeAsUpEnabled(true);

에서 하는 에서 정의하면서AndroidManifest.xml상위 활동(수행 표시줄의 뒤로 버튼을 누르면 호출되는 활동):

<activity>매니페스트의 정의, 행 추가:

android:parentActivityName="com.example.activities.MyParentActivity"

onCreate() line드이줄가가줄d

getSupportActionBar().setDisplayHomeAsUpEnabled(true);

그리고 동일한 Activity에서 버튼 클릭을 처리하기 위해 이 메서드를 추가합니다.

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

제가 좀 늦었다는 것을 알지만, 직접 문서를 따라가서 이 문제를 해결할 수 있었습니다.

메타 데이터 태그를 에 추가합니다.AndroidManifest.xml 시스템은 알 수 있습니다 이알수록)록수알(이)( )

 <activity
        android:name=".Sub"
        android:label="Sub-Activity"
        android:parentActivityName=".MainChooser"
        android:theme="@style/AppTheme.NoActionBar">
    <meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value=".MainChooser" />
    </activity>

으로, 의(업) 로 가기(합니다.MainActivity

    @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);
    } 

그리고, 모든 준비가 되어 있을 것입니다!

출처: Android 개발자 설명서

위의 내용이 많은 도움이 되는 해결책이라는 것을 알고 있지만, 이번에 이 기사(현재 안드로이드 스튜디오 2.1.2 with sdk 23)를 읽어보니 위의 몇 가지 방법이 작동하지 않습니다.

아래는 저의 하위 활동 솔루션은 MapsActivity입니다.

먼저 부모 활동을 에 추가해야 합니다.

Android Manifest.xml

다음과 같이:

<application ... >
    ...
    <!-- Main activity (which has no parent activity) -->
    <activity
        android:name="com.example.myapp.MainActivity" ...>
        ...
    </activity>
    <!-- A child of the main activity -->
    <activity
        .....
        android:parentActivityName=".MainActivity" >
        <!-- Support Parent activity for Android 4.0 and lower -->
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.example.myapp.MainActivity" />
    </activity>
</application>

이 , 이 되었는지 합니다 합니다 되었는지 이 AppCompatActivity Activity fragment Activity .

셋째, 오버라이드(override)onOptionsItemSelected()방법

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                // app icon action bar is clicked; go to parent activity
                this.finish();
                return true;
            case R.id.action_settings:
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }

이것이 도움이 되기를 바랍니다!

이것은 간단하고 나에게 매우 잘 맞습니다.

Create() 메서드에 이 내용 추가

getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);

생성 방법에 외부에 추가

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    onBackPressed();
    return true;
}

이 작업을 시도해 보십시오. 생성 중()

 getActionBar().setHomeButtonEnabled(true);
 getActionBar().setDisplayHomeAsUpEnabled(true);

그리고 클릭 이벤트는

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                // app icon in action bar clicked; goto parent activity.
                this.finish();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }

이를 달성하기 위해서는 단순히 두 가지 단계가 있습니다.

1단계: 이동AndroidManifest.xml에 이 파라미터를 추가합니다.<activity>태그 -android:parentActivityName=".home.HomeActivity"

예:

<activity
    android:name=".home.ActivityDetail"
    android:parentActivityName=".home.HomeActivity"
    android:screenOrientation="portrait" />

2단계: 입력ActivityDetail당신의 것을 더합니다.action이전 페이지/활동용

예:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:
            onBackPressed();
            return true;
    }
    return super.onOptionsItemSelected(item);
}

onCreate 메서드 쓰기-

Toolbar toolbar = findViewById(R.id.tool);
    setSupportActionBar(toolbar);
    if (getSupportActionBar() != null) {
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setDisplayShowHomeEnabled(true);
    }
}
@Override
public boolean onSupportNavigateUp() {
    onBackPressed();
    return true;
}
@Override
public void onBackPressed() {
    super.onBackPressed();
    startActivity(new Intent(ActivityOne.this, ActivityTwo.class));
    finish();
}

이건 xml 파일입니다.

<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/colorPrimary"
android:theme="@style/ThemeOverlay.AppCompat.Dark"
android:id="@+id/tool">

styles.xml로 변경합니다.

Theme.AppCompat.Light.NoActionBar

이것이 우리가 해야 할 전부입니다.

저 같은 경우에는 그냥 추가할 수 밖에 없었습니다.android:parentActivityName다음과 같은 제 활동을 시도합니다.

<activity
 android:name=".AboutActivity"
 android:label="@string/title_activity_about"
 android:parentActivityName=".MainActivity" />

뒤로 버튼이 나타나고 예상대로 작동합니다.

이런 식으로 해결했습니다.

@Override
public boolean  onOptionsItemSelected(MenuItem item){
    switch (item.getItemId()) {
        case android.R.id.home:
            onBackPressed();
            finish();
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

@Override
public void onBackPressed(){
    Intent backMainTest = new Intent(this,MainTest.class);
    startActivity(backMainTest);
    finish();
}

생성 시() 입력; 이 줄 쓰기->

getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

그런 다음 해당 클래스에서 아래 방법을 실행합니다.

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
    case android.R.id.home:
        // app icon in action bar clicked; go home
      onBackPressed();
        return true;
    default:
        return super.onOptionsItemSelected(item);
    }
}

Manifest.xml

<activity
            android:name=".Activity.SecondActivity"
            android:label="Second Activity"
            android:parentActivityName=".Activity.MainActivity"
            android:screenOrientation="portrait"></activity>

액션바 뒤로 버튼을 코틀린에 표시하기 위해서는 2가지 방법이 있습니다.

1. Android에서 제공하는 기본 수행 표시줄 사용 - 수행 표시줄이 있는 테마(예: 테마)를 사용해야 합니다.앱 컴뱃.라이트.다크 액션바

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    val actionBar = supportActionBar
    actionBar!!.title = "your title"
    actionBar.setDisplayHomeAsUpEnabled(true)
    //actionBar.setDisplayHomeAsUpEnabled(true)
}

override fun onSupportNavigateUp(): Boolean {
    onBackPressed()
    return true
}

2. 수행 표시줄을 직접 설계합니다 - 기본 수행 표시줄 사용 안 함 - 예: 테마.앱 컴뱃.Light.NoActionBar - activity.xml에 레이아웃을 추가합니다.

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

     <androidx.constraintlayout.widget.ConstraintLayout
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         tools:layout_editor_absoluteX="16dp">

         <TextView
             android:id="@+id/main_toolbar_title"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:text="Your Title"
             android:textSize="25sp"
             app:layout_constraintBottom_toBottomOf="parent"
             app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintHorizontal_bias="0.5"
             app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintTop_toTopOf="parent" />

     </androidx.constraintlayout.widget.ConstraintLayout>
 </androidx.appcompat.widget.Toolbar>

  • 생성 시
override fun onCreate(savedInstanceState: Bundle?) {
     super.onCreate(savedInstanceState)

     setSupportActionBar(findViewById(R.id.main_toolbar))
 }
  • 자신만의 버튼 만들기
<?xml version="1.0" encoding="utf-8"?>
<menu
 xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:app="http://schemas.android.com/apk/res-auto" >

 <item
     android:id="@+id/main_action_toolbar"
     android:icon="@drawable/ic_main_toolbar_item"
     android:title="find"
     android:layout_width="80dp"
     android:layout_height="35dp"
     app:actionLayout="@layout/toolbar_item"
     app:showAsAction="always"/>

</menu>
  • 활동.kt에서
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
     menuInflater.inflate(R.menu.main_toolbar_item, menu)

     leftToolbarItems = menu!!.findItem(R.id.main_action_toolbar)
     val actionView = leftToolbarItems.actionView
     val badgeTextView = actionView.findViewById<TextView>(R.id.main_action_toolbar_badge)
     badgeTextView.visibility = View.GONE

     actionView.setOnClickListener {
         println("click on tool bar")
     }
     return super.onCreateOptionsMenu(menu)
 }

스크린으로 돌아가기 위한 나의 작업 코드.

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    switch (item.getItemId()) {

    case android.R.id.home:

        Toast.makeText(getApplicationContext(), "Home Clicked",
                Toast.LENGTH_LONG).show();

        // go to previous activity
        onBackPressed();

        return true;

    }

    return super.onOptionsItemSelected(item);
}
 public void initToolbar(){
       //this set back button 
       getSupportActionBar().setDisplayHomeAsUpEnabled(true);
       //this is set custom image to back button
       getSupportActionBar().setHomeAsUpIndicator(R.drawable.back_btn_image);
}


//this method call when you press back button
@Override
public boolean onSupportNavigateUp(){
    finish();
    return true;
}
ActionBar actionBar=getActionBar();

actionBar.setDisplayHomeAsUpEnabled(true);

@Override
public boolean onOptionsItemSelected(MenuItem item) { 
        switch (item.getItemId()) {
        case android.R.id.home: 
            onBackPressed();
            return true;
        }

    return super.onOptionsItemSelected(item);
}

답변하기에는 너무 늦겠지만, 제 생각에는 더 짧고 기능적인 해결책이 있습니다.

// Inside your onCreate method, add these.
ActionBar actionBar = getSupportActionBar();
actionBar.setHomeButtonEnabled(true);
actionBar.setDisplayHomeAsUpEnabled(true);

// After the method's closing bracket, add the following method exactly as it is and voiulla, a fully functional back arrow appears at the action bar
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    onBackPressed();
    return true;
}

onCreate 기능에서 아래 코드 추가:

getSupportActionBar().setDisplayHomeAsUpEnabled(참);

그런 다음 재정의: @Options에서 public boolean을 재정의합니다.항목 선택됨(MenuItem 항목){BackPressed()에서 {; true를 반환함; }

업데이트된 버전에서 getActionBar()가 작동하지 않습니다!

대신 이런 식으로 할 수 있습니다.

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ActionBar actionBar = getSupportActionBar();
        actionBar.setDisplayHomeAsUpEnabled(true);
    }

Android 타이틀 바에 뒤로 버튼 추가 2020년에 도움이 됩니다.

언급URL : https://stackoverflow.com/questions/15686555/display-back-button-on-action-bar

반응형