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