ActionBar geri düğmesini etkinleştirmek için Etkinliğinizde bir ActionBar'a ihtiyacınız vardır. Bu, kullandığınız tema tarafından ayarlanır. Etkinlikleriniz için temayı AndroidManfiest.xml
. Örneğin @android:style/Theme.NoTitleBar
temayı kullanıyorsanız , bir ActionBar'ınız yoktur. Bu durumda, çağrı getActionBar()
null değerini döndürür. Bu yüzden önce bir ActionBar'ınız olduğundan emin olun.
Sonraki adım, android:parentActivityName
geri düğmesine basarsanız gezinmek istediğiniz etkinliğe ayarlamaktır . Bu da yapılmalıdır AndroidManifest.xml
.
Artık onCreate
"alt" etkinliğinizin yönteminde geri düğmesini etkinleştirebilirsiniz .
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getActionBar().setDisplayHomeAsUpEnabled(true);
}
Şimdi geri düğmesi için mantığı uygulamalısınız. onOptionsItemSelected
"Alt" etkinliğinizdeki yöntemi geçersiz kılar ve geri düğmesinin kimliğini kontrol edersiniz android.R.id.home
.
Şimdi eğer yöntem belirtmediyseniz eğer NavUtils.navigateUpFromSameTask(this);
AMA yöntemini ateş android:parentActivityName
edebilirsiniz AndroidManifest.xml
bu uygulama çökecektir.
Bazen istediğiniz şey budur çünkü size bir şeyleri unuttuğunuzu hatırlatır. Bunu önlemek istiyorsanız, getParentActivityIntent()
yöntemi kullanarak etkinliğinizin bir ebeveyni olup olmadığını kontrol edebilirsiniz . Bu null değerini döndürürse, üst öğeyi belirtmediniz.
Bu durumda onBackPressed()
, temel olarak kullanıcının cihazdaki geri düğmesine basmasıyla aynı yöntemi uygulayabilirsiniz. Uygulamanızı asla kilitlemeyen iyi bir uygulama:
@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);
}
}
Lütfen kullanıcının gördüğü animasyonun NavUtils.navigateUpFromSameTask(this);
ve ile arasında farklı olduğunu unutmayın onBackPressed()
.
Hangi yolu seçtiğiniz size kalmış, ancak özellikle tüm aktiviteleriniz için bir temel sınıf kullanıyorsanız çözümü yararlı buldum.
getActionBar().setDisplayHomeAsUpEnabled(true);
onCreate veswitch (item.getItemId()) {case android.R.id.home: onBackPressed();break;}
içindeonOptionsItemSelected
? her ikisi de ServicesViewActivity