[android] 작업 표시 줄에 뒤로 버튼 표시

나는 표시하기 위해 노력하고있어 Back button온을 Action bar이전 페이지 / 활동을 이동하거나 메인 페이지로 (제 1 개구) 할 수 있습니다. 그리고 나는 그것을 할 수 없습니다.

내 코드.

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

코드는입니다 onCreate.



답변

음 이것은 뒤로 버튼을 표시하는 간단한 것입니다.

actionBar.setDisplayHomeAsUpEnabled(true);

그런 다음 onOptionsItemSelected에서 back 이벤트를 사용자 정의 할 수 있습니다

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사용하지 않는 다음 활동을 support단어를, 당신은 사용할 수 있습니다

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


답변

공식 솔루션

이 두 코드 스 니펫을 SubActivity에 추가하십시오.

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

메타 데이터 및 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


답변

이 줄을 onCreate ()에 추가하십시오.

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

그리고 onOptionItemSelected에서

@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"