ActionBar 뒤로 버튼을 활성화하려면 분명히 활동에 ActionBar가 필요합니다. 이것은 사용중인 테마로 설정됩니다. 에서 활동 테마를 설정할 수 있습니다 AndroidManfiest.xml
. 예를 들어 @android:style/Theme.NoTitleBar
테마를 사용 하는 경우 ActionBar가 없습니다. 이 경우에 대한 호출 getActionBar()
은 null을 반환합니다. 따라서 ActionBar가 먼저 있는지 확인하십시오.
다음 단계는 android:parentActivityName
뒤로 버튼을 누르면 탐색하려는 활동 으로 설정하는 것입니다. 이것도 역시해야합니다 AndroidManifest.xml
.
이제 onCreate
"자식"활동 방법 에서 뒤로 단추를 사용할 수 있습니다 .
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getActionBar().setDisplayHomeAsUpEnabled(true);
}
이제 뒤로 버튼의 논리를 구현해야합니다. 단순히 onOptionsItemSelected
"자식"활동 의 메소드 를 대체하고 뒤로 단추의 ID 인를 확인하십시오 android.R.id.home
.
이제 방법을 발사 할 수 있습니다 NavUtils.navigateUpFromSameTask(this);
하지만 당신이를 지정 해달라고하면 android:parentActivityName
당신에 AndroidManifest.xml
이 앱을 충돌합니다.
때로는 "무언가"를 잊었 음을 상기시키기 때문에 이것이 원하는 것입니다. 따라서이를 방지하려면 getParentActivityIntent()
메소드를 사용하여 활동에 부모가 있는지 확인할 수 있습니다 . 이것이 null을 반환하면 부모를 지정하지 않은 것입니다.
이 경우 onBackPressed()
사용자가 기기의 뒤로 버튼을 누르는 것과 기본적으로 동일한 방법을 실행할 수 있습니다 . 앱을 중단시키지 않는 좋은 구현은 다음과 같습니다.
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
if (getParentActivityIntent() == null) {
Log.i(TAG, "You have forgotten to specify the parentActivityName in the AndroidManifest!");
onBackPressed();
} else {
NavUtils.navigateUpFromSameTask(this);
}
return true;
default:
return super.onOptionsItemSelected(item);
}
}
사용자에게 표시되는 애니메이션은 NavUtils.navigateUpFromSameTask(this);
및에서 서로 다릅니다 onBackPressed()
.
어느 길을 택 하느냐는 당신에게 달려 있지만, 특히 모든 활동에 기본 수업을 사용하는 경우 해결책이 도움이됩니다.
getActionBar().setDisplayHomeAsUpEnabled(true);
에서 onCreate와switch (item.getItemId()) {case android.R.id.home: onBackPressed();break;}
의onOptionsItemSelected
? ServicesViewActivity 모두